0
我需要一种方法来使用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
所以我不能使用期货。
在发布之前,我做了很多研究,但找不到任何东西。
感谢您的回复!
我测试了它,现在它返回的MyObject实体的权数,但孩子们返回复制的,例如,用于为MyObject的一个实例我有可能在返回客户端列表:客户端1,客户端1,客户端1,客户端2,客户端2,客户端2。任何ideea为什么发生这种情况? –
您可以使用HQL来尝试吗?例如'SessionHolder.Current.CreateQuery(“from MyObject o left join fetch o.Clients left join fetch o.Locations left join fetch o.Contracts”)。SetResultTransformer(new DistinctRootEntityResultTransformer())。List()' –
当然,我会试一试 –