"Косвенные" отношения ManyToMany - PullRequest
1 голос
/ 11 августа 2011

Предупреждение: я новичок в NHibernate!

У меня есть объект User.Этот объект пользователя имеет связанные роли.Эти роли имеют связанные привилегии.Цель состоит в том, чтобы получить список привилегий для пользователя.Привилегии «косвенно» связаны с пользователями через роли.

При выборе пользователя для получения списка связанных привилегий я мог бы получить кратные привилегии.Поэтому я делаю UNIQE выбор.

Мне интересно, возможно ли иметь какое-то «волшебное» отображение NHibernate, которое заполнит мой список ролей И мой список привилегий.Самая легкая часть, которую я решил сам (горжусь! ;-)), правильно отображает роли.Я понятия не имею, как получить «косвенно» связанные (уникальные) привилегии.

Есть идеи?

1 Ответ

1 голос
/ 11 августа 2011
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
...