如何使用 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 来做吗?
最佳答案
关于Nhibernate 查询结束。使用 JoinAlias 进行急切获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14830797/