我想加载根实体并加载所有它的子集合和聚合成员。渴望加载与NHibernate的子集合
一直在尝试在FluentNHibernate中使用SetFetchMode
,但由于我有3个层次的深度,因此我在其中一个子集合中获取了重复项。 DistinctRootEntityResultTransformer
不幸的是只能删除根重复。
return Session.CreateInvoiceBaseCriteria(query, archived)
.AddOrder(new Order(query.Order, query.OrderType == OrderType.ASC))
.SetFetchMode("States", FetchMode.Eager)
.SetFetchMode("Attestations", FetchMode.Eager)
.SetFetchMode("AttestationRequests", FetchMode.Eager)
.SetFetchMode("AttestationRequests.Reminders", FetchMode.Eager)
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.List<Invoice>();
我可以使用多个查询或类似的东西来归档吗?
此外,这种方法不会导致数据库中不必要的巨大结果集吗?
有什么建议吗?
确实是一篇很好的文章,但不确定我是否可以将其应用于我的情况。在关于急切加载特定根实体的文章中描述的解决方案中,我的问题是我想加载一组根实体。如果我使用MultiCritera,我需要找到一种方法来连接所有不同的查询,而无需指定特定的实体。建议如何做到这一点? – Kristoffer 2009-06-02 11:46:28
该示例只有一个额外的层次结构级别,但没有孙子,MultiQuery/MultiCriteria似乎完全无用,因为后面的查询无法引用先前查询的结果(如Query#1:select rootObjects r left join fetch children c其中...;查询#2:选择孙的父母在c)。 – 2012-05-30 10:09:52