我需要一种方法,使用NHibernate
急切地检索特定类型的所有实体的所有子集合。
我试过了:
var myObjectList = SessionHolder.Current
.CreateCriteria(typeof(MyObject))
.SetFetchMode("Clients", FetchMode.Eager)
.SetFetchMode("Locations", FetchMode.Eager)
.SetFetchMode("Contracts", FetchMode.Eager)
.List<MyObject>();
查询应该已经从数据库中返回了所有MyObject实例,并且它们的集合被急切地加载但是它没有按预期工作,而是返回了比预期更多的对象。我认为这与n + 1选择问题有关。
我发现this solution要检索集合,但我目前仅限于使用NHibernate 1.2.1.4000
,因此我无法使用期货。
我在发布之前做了很多研究,但找不到任何东西。
感谢您的回复!
答案 0 :(得分:1)
尝试使用不同的结果转换器:
var myObjectList =
SessionHolder.Current
.CreateCriteria(typeof(MyObject))
.SetFetchMode("Clients", FetchMode.Eager)
.SetFetchMode("Locations", FetchMode.Eager)
.SetFetchMode("Contracts", FetchMode.Eager)
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.List<MyObject>();