Nhibernate 查询结束。使用 JoinAlias 进行急切获取

标签 nhibernate queryover

如何使用 JoinAlias 进行 Eager fetch? 我有以下查询:

QueryOver<Ticket>()
    .JoinAlias(ticket => ticket.Agent, () => agent)
    .JoinAlias(ticket => ticket.Activities, () => activity)
    .Left.JoinAlias(ticket => ticket.BusinessUnit, () => unit) .... 
    .List<Ticket>();

我需要这个连接来实现复杂的过滤器逻辑,这对于这个问题来说并不重要。此查询生成这样的 SQL:

FROM
       Requests.Ticket this_ INNER JOIN Requests.TicketsActivity activity2_
       ON this_.ID
          = 
          activity2_.TicketId
                             INNER JOIN Support.Agent agent1_
       ON this_.AgentID
          = 
          agent1_.ID
                             LEFT OUTER JOIN Requests.BusinessUnit unit3_
       ON this_.BusinessUnitId
          = 
          unit3_.ID

这正是我所需要的。但是,当我尝试访问相关实体之一(已加入)时,Nhibernate 会创建一个新的惰性查询。如何防止这种情况发生?

我可以为每个关系添加:

QueryOver<Ticket>().Fetch(ticket => ticket.Activities).Eager.Future();

此解决方案解决了问题,但将带有外连接的新查询添加到上述现有查询中。 “当一个头被砍掉时,被砍掉的地方就会长出另外两个头”

更新:

将所有连接更改为外部连接即可解决该问题。可以用inner 来做吗?

最佳答案

我以前遇到过这个,我不相信这是设计使然,因为我从来没有得到任何真正的解释。

参见this :

我认为我们现在陷入了困境。

关于Nhibernate 查询结束。使用 JoinAlias 进行急切获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14830797/

相关文章:

c# - 使用表达式在 NHibernate QueryOver 中进行动态排序

mysql - 如何配置自定义 MySQL NHibernate Batcher?

C# - NHibernate带来多对多关系的多条记录

nhibernate - 左连接、非重复和使用 QueryOver 进行分页

c# - Fluent Nhibernate - 选择特定列并使用 group by 计数查询

具有连接(或获取)的 Nhibernate 查询返回重复项

nHibernate 不在命令行上运行的 MSTests 中创建 Oracle 驱动程序

带有 Rhino 安全性的 NHibernate - 非法尝试将代理与两个打开的 session 相关联

c# - NHibernate - 根据子属性过滤掉结果

c# - 如何使用 Nhibernate 进行条件求和?