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