【发布时间】:2010-10-09 12:48:43
【问题描述】:
我有一个相当深的对象图(5-6 个节点),当我遍历其中的一部分时,NHProf 告诉我我遇到了“选择 N+1”问题(我确实这样做了)。
我知道的两个解决方案是
- 急切的孩子
- 分解我的对象图(和急切加载)
我真的不想做这两个(尽管我可能会在以后将图表分开,因为我预计它会增长)
现在……
是否可以告诉 NHibernate(使用 FluentNHibernate)每当我尝试访问孩子时,一次性加载它们,而不是在我迭代它们时选择-n+1-ing?
我也得到了“无限的结果集”,这大概是同一个问题(或者更确切地说,如果可能的话,将通过上述解决方案来解决)。
每个子集合(在整个图表中)只会有大约 20 个成员,但 20^5 很多,所以我不想在获得根时急切加载所有内容,而只是获取所有的孩子每当我靠近它时收集。
编辑:事后诸葛亮......如果我想在渲染孩子时引入分页怎么办?我必须在这里打破我的对象图吗,还是我可以利用一些鬼鬼祟祟的方法来解决所有这些问题?
【问题讨论】:
标签: nhibernate select fluent-nhibernate