gpt4 book ai didi

NHibernate 3. QueryOver 中 "ThenFetch"的替代方案

转载 作者:行者123 更新时间:2023-12-03 22:55:55 27 4
gpt4 key购买 nike

我将 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 中没有这样的方法,那么我怎样才能达到相同的结果呢?

提前致谢。

最佳答案

我实际上设法使用两种不同的方法解决了这个问题:

方法一:

Session.QueryOver<Foo>().Fetch(x => x.A).Fetch(x => x.A.B).Fetch(x => x.A.B.C)

方法二:
A a = null;
B b = null;
C c = null;

Session.QueryOver<Foo>()
.JoinAlias(x => x.A, () => a)
.JoinAlias(() => a.B, () => b)
.JoinAlias(() => b.C, () => c)

两者都有效(虽然我不确定其中一个是否生成“内部”,而另一个“外部”连接)。

关于NHibernate 3. QueryOver 中 "ThenFetch"的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4801235/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com