如何使用JoinAlias进行Eager提取? 我有以下查询:
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();
此解决方案解决了该问题,但添加了具有外连接的新查询到上述现有连接。 “当一个人的头被切断时,它被切断的地方会出现另外两个人”
更新
可以解决问题,将所有连接更改为外部。可以用内在的吗?