2011-11-02 40 views
1

我們在如下所示的組合ID中具有鍵引用nhibernate組合鍵引用生成多個查詢

table(「parent」); compositeid() .keyreference(e => Obj,「sample」);

這會爲父級中的每一行生成單獨的obj查詢。如何解決這個問題呢 ? 這裏主要是如何控制獲取startegies(內部連接)的keyreference?

請幫忙

回答

-2

你可以調整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(); 
+0

嘿,這仍然運行多個查詢。 – Thanigainathan

+0

第一個查詢看起來像是「SELECT obj.Id,parent。* FROM parent join obj'還是'SELECT obj。*,parent。* FROM parent join obj'或'SELECT parent。* FROM parent'? – Firo

+0

我不明白爲什麼這個答案被接受;這是完全錯誤的,問題是*它不是*懶加載,所以告訴它不要延遲加載不會有幫助。 (不,寫'c.Lazy()'也行不通。) – Aaronaught