使用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会亲自“清理”的