Удалите отношения «многие ко многим», используя Fluent Nhibernate - PullRequest
0 голосов
/ 12 июля 2011

Класс пользователя

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);
        }
    }

Класс роли

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>();
        }
    }

Класс UserMap

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();


        }
    }

Класс RoleMap

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();
        }
    }

Мои вопросы:

  • Я хочу удалить все роли конкретного пользователя?[Отвечает danyolgiax]
  • Получить роли пользователя

Может ли кто-нибудь один направить меня ..

1 Ответ

3 голосов
/ 12 июля 2011

попробуйте .Inverse() на User (не на Role), а затем:

user.Roles.Clear();
yourNhSession.SaveOrUpdate(user);

обновление

User user= yourNhSession.Get<User>(userId);

IList<Role> role= user.Roles;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...