Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NHibernate避免N+;1.深层次_Nhibernate - Fatal编程技术网

NHibernate避免N+;1.深层次

NHibernate避免N+;1.深层次,nhibernate,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(); var query=session.query() .Fetch(x=>x.B) .ThenFetchM

我有以下目标: 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();
var query=session.query()
.Fetch(x=>x.B)
.ThenFetchMany(x=>x.C)
.Distinct();
但后来他做了117次,而不是之前的5次。例如,E现在并不急于加载。或者C是B的十倍而不是一倍

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


提前感谢

看看Ayende的文章,开始使用NHibernate Profiler,它可以检测N+1问题