2

如何使用 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();

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

更新:

该问题可以通过将所有连接更改为外部连接来解决。有没有可能用内在做呢?

4

1 回答 1

2

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

看到这个

我想我们现在被困住了。

于 2014-02-12T11:11:06.880 回答