如何使用 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();
此解决方案解决了该问题,但将带有外部连接的新查询添加到上述现有查询中。“当一个头被砍下时,被砍下的地方又放出了另外两个”
更新:
该问题可以通过将所有连接更改为外部连接来解决。有没有可能用内在做呢?