2009-05-18 47 views
2

,如果我做FirstOrDefault()打破FetchType =使用LINQ加入NHibernate的

Session.Linq<MyClass>().Where(x => x.Id = someId).FirstOrDefault(); 

其中MyClass有一組就可以了渴望加載的子對象,在FirstOrDefault()似乎防止這種合作,通過增加一個TOP 1到SQL。

這只是一個錯誤(功能?)在Linq2NH(我明白正在重寫)還是我錯過了什麼?

有沒有一個適合工作的首選方案?

感謝

回答

3

看起來像一個bug,在我看來FirstOrDefault是一個非常明確的LINQ的運營商,它無關急切/延遲加載,所以它不應該打破它。

我想有很多這樣的細微差別,這導致圖書館沒有生產準備。我建議將錯誤提交給開發人員。

在這種情況下,回落到DetachedCriteria(或HQL)是我認爲唯一的選擇。

+0

這是一個錯誤,這也有助於解釋它:http://ayende.com/Blog/archive/2006/05/02/CombatingTheSelectN1ProblemInNHibernate.aspx – 2010-07-16 12:03:25