1

我有以下对象:A -> B -> IList -> D -> IList 等等..

如果我获取 A 的列表,NHibernate 会在 B 上进行内部连接。没关系。但是 C 是通过 N+1 问题获取的。

我试过这个:

var query = session.Query<A>()
    .Fetch(x => x.B)
    .ThenFetchMany(x => x.C)
    .Distinct();

但后来他做了 117 次取回,而不是之前的 5 次。例如 E 现在没有急切地加载。或者 C 在 B 中是十次而不是一次。

对于这种情况,最好的方法是什么?

提前致谢

4

1 回答 1

0

看看 Ayende 的文章Solving the Select N+1 Problem,开始使用 NHibernate Profiler,它可以检测 N+1 个问题Alert: Select N+1

于 2012-07-25T22:35:21.453 回答