2009-05-18 50 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