我有一個父對象,其中包含一個元素的子集合,子集合包含一個包含3個元素的「grandchild」集合。NHibernate ThenFetchMany檢索重複的子代
我從使用NHibernate數據庫加載父對象如下
Parent parentObject = session.Query<Parent>()
.FetchMany(x => x.Children)
.ThenFetchMany(x => x.GrandChildren)
.Where(x => x.Id = "someparentid")
.Single();
什麼我的發現是,有重複的子對象連接到父對象時,應該有(共3)只有一個。 (每個孩子都有3個孫子對象正確連接。)只需正確加載子集合即可。
你知道我怎樣才能實現沒有重複的孩子加載完整的父對象?
@ j0k - 感謝編輯,還沒有早晨咖啡尚未:) – Phill 2011-06-01 00:11:36
我我們分析了正在生成的SQL查詢,並且有兩個左連接,兩個主鍵和外鍵都具有連接條件,所以我相當肯定它不是笛卡爾的產品。過去我使用LinqToSql實現了這一點。 – Simon 2011-06-01 00:15:39
@Simon - 將查詢放入SQL Server Management Studio並運行查詢,您將看到所有表的所有結果。 有可能實現相同的結果,但您必須編寫HQL。請參閱Ayende的博客深層對象圖 - http://ayende.com/blog/2580/efficently-loading-deep-object-graphs – Phill 2011-06-01 00:21:10