使用NHibernate QueryOver分离收集的限制

时间:2012-03-10 09:12:46

标签: nhibernate queryover

大家都是NHibernate大师!

鉴于这两个类:

public class User {
    long Id;
    string Name;
}

public class Project {
    long Id;
    User Owner;
    IList<User> Managers;
    ...
}

我想查询使用QueryOver (不使用条件“魔术字符串”别名)来获取所有项目,其中user1为所有者 OR 作为其中一个管理者。

我知道如何分开:

  • 获取具有user1作为所有者的项目:session.QueryOver&lt;&gt; Project&gt;&gt;()。其中​​(p =&gt; p.Owner == user1)
  • 获取经理:session.QueryOver&lt;&gt;()。JoinAlias(p =&gt; p.Managers,()=&gt; manager).Where(()=&gt; manager == user1)

但是我不知道怎么写分离

如果有人有想法,那对我很有用。

提前致谢,

克里斯

1 个答案:

答案 0 :(得分:2)

类似的东西: -

User manager = null;

var query = session
    .QueryOver<Project>()
    .JoinAlias(j => j.Managers, () => manager)
    .Where(w => manager.Name == user1 || w.Owner == user1)
    .List<Project>();

修改以将过滤器从Name更改为Id(正如OP指出的那样): -

.Where(w=>manager.Id == user1.Id || w.Owner.Id == user1.Id)

edit2 更改从内到左的使用

.JoinAlias(j => j.Managers, () => manager).left