2011-08-11 76 views
1

警告:我是NHibernate的全新品!“间接”ManyToMany关系

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

当用户选择获取相关权限列表时,我可能会得到多个特权。所以我做了UNIQE选择。

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

任何想法?

回答

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 
+0

酷,工作。非常感谢! – Andreas