私は面白い問題が起きています。私は間違っていますか、MVC 3でFluent nHibernateを使用しています。ユーザー、ロール、および多くの人のためのUsersinRoleテーブルがあります。多くの関係。Fluent nHibernateの問題が多対多のマッピング
ユーザーマッピング:
Id(user => user.UserID).GeneratedBy.Guid();
Map(user => user.UserName).Not.Nullable();
Map(user => user.Password).Not.Nullable();
Map(user => user.FullName).Not.Nullable();
Map(user => user.Email).Not.Nullable();
Map(user => user.IsActive).Not.Nullable();
Map(user => user.CreationDate).Not.Nullable();
HasManyToMany<Role>(x => x.Roles).Table("tblUserInRoles")
.ParentKeyColumn("UserID")
.ChildKeyColumn("RoleID")
.Cascade.All()
.Not.LazyLoad();
役割マッピング:
Id(role => role.RoleID).GeneratedBy.Identity();
Map(role => role.RoleName).Not.Nullable();
Map(role => role.IsActive).Not.Nullable();
Map(role => role.Description).Not.Nullable();
HasManyToMany<User>(x => x.Users)
.Table("tblUserInRoles")
.ParentKeyColumn("RoleID")
.ChildKeyColumn("UserID")
.Cascade.SaveUpdate()
.Inverse()
.Not.LazyLoad();
ユーザエンティティ:
public virtual Guid UserID { get; set; }
public virtual string UserName { get; set; }
public virtual string Password { get; set; }
public virtual string FullName { get; set; }
public virtual string Email { get; set; }
public virtual TimeSpan LastLogin { get; set; }
public virtual bool IsActive { get; set; }
public virtual DateTime CreationDate { get; set; }
public virtual IList<Role> Roles { get; set; }
public User()
{
Roles = new List<Role>();
}
public virtual void AddRoles(Role role)
{
role.Users.Add(this);
Roles.Add(role);
}
役割のエンティティ:
public virtual string RoleName { get; set; }
public virtual bool IsActive { get; set; }
public virtual string Description { get; set; }
public virtual IList<User> Users { get; set; }
public virtual IList<Role> Roles { get; set; }
public Role()
{
Users = new List<User>();
}
問題は、任意のロールを削除すると、UserInRoleテーブル内のユーザーとロールの関連付けが削除され、削除するロールに関連するすべてのユーザーが削除されることです。同じ事が私がユーザーを削除した場合、逆になります。
問題の原因を知っている人はいますか?
私はいくつかの間違いを犯しました。その作業は今すぐうまくいきます。この[link](http://stackoverflow.com/questions/1321416/fluent-nhibernate-hasmanytomany-mapping-problem)助けてください。 – Saad