1
我們在如下所示的組合ID中具有鍵引用nhibernate組合鍵引用生成多個查詢
table(「parent」); compositeid() .keyreference(e => Obj,「sample」);
這會爲父級中的每一行生成單獨的obj查詢。如何解決這個問題呢 ? 這裏主要是如何控制獲取startegies(內部連接)的keyreference?
請幫忙
我們在如下所示的組合ID中具有鍵引用nhibernate組合鍵引用生成多個查詢
table(「parent」); compositeid() .keyreference(e => Obj,「sample」);
這會爲父級中的每一行生成單獨的obj查詢。如何解決這個問題呢 ? 這裏主要是如何控制獲取startegies(內部連接)的keyreference?
請幫忙
你可以調整keyreferencemapping。最簡單的辦法就是禁用延遲加載
.KeyReference(e => e.Obj, c => c.Not.Lazy());
但是它會使用select而不是join。但是,使用NH使用查詢聯接
var loaded = session.Query<Parent>()
.Fetch(c => c.Obj)
.ToList();
注:似乎LINQ的不急於取而QueryOver沒有。這不起作用
var loaded = session.QueryOver<Parent>()
.Fetch(c => c.Obj).Eager
.List();
嘿,這仍然運行多個查詢。 – Thanigainathan
第一個查詢看起來像是「SELECT obj.Id,parent。* FROM parent join obj'還是'SELECT obj。*,parent。* FROM parent join obj'或'SELECT parent。* FROM parent'? – Firo
我不明白爲什麼這個答案被接受;這是完全錯誤的,問題是*它不是*懶加載,所以告訴它不要延遲加載不會有幫助。 (不,寫'c.Lazy()'也行不通。) – Aaronaught