nhibernate - 限制使用 NHibernate QueryOver 进行析取收集

标签 nhibernate queryover

大家好 NHibernate 大师!

鉴于这两个类:

public class User {
    long Id;
    string Name;
}

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

我想做一个查询使用 QueryOver (不使用标准“魔法字符串”别名),获取所有将 user1 作为所有者的项目 作为经理之一。

我知道如何分开:
  • 获取 user1 作为所有者的项目: session.QueryOver<>Project>>().Where(p=>p.Owner == user1)
  • 成为经理: session.QueryOver<>().JoinAlias(p=>p.Managers, ()=>manager).Where(()=>manager == user1)

  • 但是 不知道析取词怎么写 .

    如果有人有想法,那会对我有很大帮助。

    提前致谢,

    克里斯

    最佳答案

    就像是:-

    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)
    

    编辑2 将内部更改为左侧使用
    .JoinAlias(j => j.Managers, () => manager).left
    

    关于nhibernate - 限制使用 NHibernate QueryOver 进行析取收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9645264/

    相关文章:

    nhibernate - nhibernate 3.0 准备好用于生产了吗

    nhibernate - QueryOver 与 Join 和 Distinct

    c# - Fluent Nhibernate - 通过分组连接查询

    在复杂对象图上使用 Queryover API 进行 NHibernate Eager Loading

    c# - 加载附加到对象的所有实体(忽略延迟加载)

    c# - 如何使用 nhibernate 从存储过程中返回一个位

    c# - 如何使用 nHibernate 和 QueryOver API 获得不同的结果?

    mysql - 使用 NHibernate QueryOver<> 获取表中的所有字段

    nhibernate - SQL Server CE 是否支持使用 NHibernate 更新架构?

    c# - 对选择合适的 ORM 感到困惑?