使用NHibernate QueryOver分离收集的限制

Chr*_*ris 5 nhibernate queryover

大家好NHibernate大师!

鉴于这两个类:

public class User {
    long Id;
    string Name;
}

public class Project {
    long Id;
    User Owner;
    IList<User> Managers;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想使用QueryOver(不使用条件"魔术字符串"别名)进行查询,以获取所有项目,其中user1作为所有者作为管理员之一.

我知道如何分开:

  • 获取具有user1作为所有者的项目:session.QueryOver <> Project >>().Where(p => p.Owner == user1)
  • 得到经理:session.QueryOver <>().JoinAlias(p => p.Managers,()=> manager).Where(()=> manager == user1)

我不知道怎么写分离.

如果有人有想法,那对我很有帮助.

提前致谢,

克里斯

Rip*_*ppo 2

就像是:-

User manager = null;

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

编辑以将过滤器更改为NameId正如OP指出的那样):-

.Where(w=>manager.Id == user1.Id || w.Owner.Id == user1.Id)
Run Code Online (Sandbox Code Playgroud)

edit2将内部更改为左侧使用

.JoinAlias(j => j.Managers, () => manager).left
Run Code Online (Sandbox Code Playgroud)