NHibernate避免N + 1与深层次
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NHibernate避免N + 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的十倍而不是一次。
对于这种情况,最好的方法是什么?
提前致谢
答案
看看Ayende的文章Solving the Select N+1 Problem,开始使用NHibernate Profiler,它可以检测到N + 1问题Alert: Select N+1
以上是关于NHibernate避免N + 1与深层次的主要内容,如果未能解决你的问题,请参考以下文章
使用 Fluent NHibernate 将每个层次结构映射到现有数据库的表,没有鉴别器列
在 NHibernate 中定义多对多关系以允许删除但避免重复记录的正确方法是啥