NHibernate避免N + 1与深层次

时间:2012-07-25 08:29:34

标签: nhibernate

我有以下物品: 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的十倍而不是一次。

这种情况的最佳方法是什么?

提前致谢

1 个答案:

答案 0 :(得分:0)

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