使用Fluent Nhibernate删除多对多关系
用户类使用Fluent Nhibernate删除多对多关系,nhibernate,asp.net-mvc-3,fluent-nhibernate,Nhibernate,Asp.net Mvc 3,Fluent Nhibernate,用户类 public class User { public virtual Guid UserID { get; set; } public virtual string UserName { get; set; } public virtual string Password { get; set; } public virtual string FullName { get; set; } pu
public class User
{
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);
}
}
公共类用户
{
公共虚拟Guid用户标识{get;set;}
公共虚拟字符串用户名{get;set;}
公共虚拟字符串密码{get;set;}
公共虚拟字符串全名{get;set;}
公共虚拟字符串电子邮件{get;set;}
公共虚拟时间跨度LastLogin{get;set;}
公共虚拟布尔是活动的{get;set;}
公共虚拟日期时间创建日期{get;set;}
公共虚拟IList角色{get;set;}
公共用户()
{
角色=新列表();
}
公共虚拟void AddRoles(角色)
{
role.Users.Add(此);
角色。添加(角色);
}
}
角色类
public class Role
{
public virtual int? RoleID { get; set; }
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>();
}
}
公共类角色
{
公共虚拟int?RoleID{get;set;}
公共虚拟字符串RoleName{get;set;}
公共虚拟布尔是活动的{get;set;}
公共虚拟字符串描述{get;set;}
公共虚拟IList用户{get;set;}
公共虚拟IList角色{get;set;}
公共角色()
{
用户=新列表();
}
}
用户映射类
public class UserMap : ClassMap<User>
{
public UserMap()
{
Table("tblUsers");
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.LastLogin).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()
//.AsSet()
//.Inverse()
.Not.LazyLoad();
}
}
公共类用户映射:类映射
{
公共用户映射()
{
表(“tblUsers”);
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.LastLogin).Nullable();
Map(user=>user.IsActive).Not.Nullable();
Map(user=>user.CreationDate).Not.Nullable();
HasManyToMany(x=>x.Roles).Table(“tbluseringroles”)
.ParentKeyColumn(“用户ID”)
.ChildKeyColumn(“RoleID”)
.Cascade.All()
//1.资产()
//.Inverse()
.Not.LazyLoad();
}
}
角色映射类
public class RoleMap : ClassMap<Role>
{
public RoleMap()
{
Table("tblRoles");
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.All()
.Inverse()
.Not.LazyLoad();
}
}
公共类角色映射:类映射
{
公共角色映射()
{
表(“tblRoles”);
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(x=>x.Users)
.表格(“TBluserin角色”)
.ParentKeyColumn(“RoleID”)
.ChildKeyColumn(“用户ID”)
.Cascade.All()
.Inverse()
.Not.LazyLoad();
}
}
我的问题是:
- 我想删除特定用户的所有角色?[由danyolgiax回答]
- 获取用户的角色
用户
(而不是角色
)上尝试.Inverse()
,然后:
user.Roles.Clear();
yourNhSession.SaveOrUpdate(user);
更新
User user= yourNhSession.Get<User>(userId);
IList<Role> role= user.Roles;
User-User=yourNhSession.Get(userId);
IList role=user.Roles;
在用户
(而不是角色
)上尝试.Inverse()
,然后:
user.Roles.Clear();
yourNhSession.SaveOrUpdate(user);
更新
User user= yourNhSession.Get<User>(userId);
IList<Role> role= user.Roles;
User-User=yourNhSession.Get(userId);
IList role=user.Roles;
thnx感谢您的支持和帮助我还有另一个问题,请指导我。谢谢!我以为NHibernate会亲自做这个“澄清”谢谢你的支持和帮助我还有另一个问题请指导我。谢谢!我以为NHibernate会亲自“清理”的