NHibernate 查询与 Fetch/FetchMany 和不同“级别”的谓词

问题描述

使用 NHibernate 5.2(和 sql Server),有没有办法将 where 子句添加到使用 Fetch 的查询的非“根”?

例如:

var prQuery = Db.Session.Query<PR>()
    .Where(pr => pr.TimeCompleted == null)

    .FetchMany(pr => pr.PRFs)
    .ThenFetch(prf => prf.PF)
    .ThenFetchMany(pf => pf.IL)
    .ThenFetch(il => il.OrderItem)
    .ThenFetch(oi => oi.Order)

    .FetchMany(pr => pr.PRFs)
    .ThenFetch(prf => prf.PF)
    .ThenFetchMany(pf => pf.IL)
    .ThenFetch(il => il.OrderItem)
    .ThenFetch(oi => oi.Design)
    
    // 4 more FetchMany blocks.

理想情况下,我希望将 .Where(o => o.IsDeleted == false) 添加到第二个块中,但 .Where 上下文用于 PR 对象。

我从这里和博客文章中尝试了许多不同的想法。以及各种 .Select.SelectMany 变体。查询需要返回填充的 PR 对象的对象图。

NH 是否可以在服务器端生成适当的 sql,或者只能选择在客户端过滤? (父母和他们的子实体/集合之间的映射看起来都很好,上面的查询确实有效,只是无法在服务器上过滤。)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)