“间接”ManyToMany关系

时间:2011-08-11 10:22:52

标签: fluent-nhibernate nhibernate-mapping

警告:我是NHibernate的新手!

我有一个User对象。此User对象具有相关角色。这些角色具有相关权限。目标是获取用户的权限列表。权限通过角色“间接”与用户相关。

当对用户进行选择以获取相关权限列表时,我可能会获得权限的倍数。所以我做了UNIQE选择。

我想知道是否可以使用一些“魔术”NHibernate映射来填充我的角色列表和我的权限列表。我自己解决的简单部分(骄傲!;-))正确映射角色。我不知道如何获得'间接'相关(独特)权限。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

public class User
{
    public virtual int Id { get; set; }

    public virtual ICollection<Role> Roles { get; private set; }

    public virtual IEnumerable<Privilege> Privileges
    {
        get { return Roles.SelectMany(role => role.Priveleges).Distinct(); }
    }

    public User()
    {
        Roles = new List<CompanyRole>();
    }
}

和查询类似

session.QueryOver<User>()
    .Fetch(u => u.Roles).Eager
    .Fetch(u => u.Roles.Privileges).Eager