NHibernate 3.“ThenFetch”的替代方案在查询中
我将 NHibernate 3.0 与 LINQ 提供程序和 QueryOver 一起使用。有时我想急切地加载相关数据,这时可以使用 LINQ 和 QueryOver 中的“Fetch”方法来救援。现在我有一个特殊的场景,我想不直接在第二层加载一个属性,例如:
Foo f = ...;
f.A.B.C
使用 LINQ 没有问题,因为您可以使用“ThenFetch”方法“链接”获取,例如:
var result = Session.Query<Foo>().Fetch(a => a.A).ThenFetch(b => b.B).ThenFetch(c => c.C).ToList();
在 QueryOver 中没有这样的方法,那么如何才能达到相同的结果呢?
提前致谢。
I'm using NHibernate 3.0 with both the LINQ provider and QueryOver. Sometimes I want to eager load related data, and there comes the method "Fetch" to the rescue, both in LINQ and QueryOver. Now I have a special scenario where I want to eager load a property not directly on the second level, like:
Foo f = ...;
f.A.B.C
with LINQ there's no problem, as you can "chain" fetches with the method "ThenFetch", like:
var result = Session.Query<Foo>().Fetch(a => a.A).ThenFetch(b => b.B).ThenFetch(c => c.C).ToList();
In QueryOver there's no such method, so how can I achieve the same result?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我实际上设法使用两种不同的方法来解决这个问题:
方法一:
方法二:
两者都有效(尽管我不确定其中一个是否生成“内部”连接,另一个“外部”连接)。
I actually managed to solve this problem using two different approaches:
Approach one:
Approach two:
Both work (altough I'm not exactly sure if one of them generated "inner" and the other one "outer" joins).
出于好奇,我将在 NHibernate Jira:
Just as a curiosity, I'll post the reply they gave me on the NHibernate Jira:
我认为你可以用 JoinQueryOver 做到这一点
I think you can do that with JoinQueryOver