我想加載根實體並加載所有它的子集合和聚合成員。渴望加載與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