我有一個非常複雜的對象圖,我想一次加載 一舉。NHibernate Eager在一個複雜的對象圖上加載Queryover API
樣品具有Daylogs具有具有Daylog 結果
Daylog測試Daylog測試具有Testkeys,Daylog結果有Resultkeys,和 TestKeys具有Resultkeys。
我正在使用QueryOver API和Future來將這些全部作爲一個查詢運行,並且所有NHibernate應該實例化所有數據,以便實例化由NHProf返回的完整的 圖形。
public static IList<Daylog> DatablockLoad(Isession sess,
ICollection<int> ids)
{
var daylogQuery = sess.QueryOver<Daylog>()
.WhereRestrictionOn(dl => dl.DaylogID).IsIn(ids.ToArray())
.Fetch(dl => dl.Tests).Eager
.TransformUsing(Transformers.DistinctRootEntity)
.Future<Daylog>();
sess.QueryOver<DaylogTest>()
.WhereRestrictionOn(dlt =>
dlt.Daylog.DaylogID).IsIn(ids.ToArray())
.Fetch(dlt => dlt.Results).Eager
.Inner.JoinQueryOver<TestKey>(dlt => dlt.TestKey)
.Fetch(dlt => dlt.TestKey).Eager
.Inner.JoinQueryOver<ResultKey>(tk => tk.Results)
.Fetch(dlt => dlt.TestKey.Results).Eager
.Future<DaylogTest>();
sess.QueryOver<DaylogResult>()
.Inner.JoinQueryOver(dlr => dlr.DaylogTest)
.WhereRestrictionOn(dlt =>
dlt.Daylog.DaylogID).IsIn(ids.ToArray())
.Fetch(dlr => dlr.ResultKey).Eager
.Fetch(dlr => dlr.History).Eager
.Future<DaylogResult>();
var daylogs = daylogQuery.ToList();
return daylogs;
}
不過,我還是最終與代理代表密押和ResultKey之間的關係 ,即使我特別加載 這種關係。
我覺得這整個查詢可能是代表一個貧窮 理解QueryOver API的,所以我想任何和所有的意見 就可以了,但主要是,我想知道爲什麼我得到一個代理,而不是 後面的結果列表我試圖獲得 daylogresult.resultkey.testkey.results。
任何幫助?