Linq for NHibernate和fetch模式的急切加载

时间:2009-05-06 21:13:51

标签: linq nhibernate fetch eager

有没有办法使用linq for nhibernate将fetchmode设置为渴望多个对象。似乎有一种扩展方法,它只允许我设置一个对象。但是我需要为多个对象设置它。这可能吗?感谢

4 个答案:

答案 0 :(得分:105)

新的Linq提供商的做法略有不同:

var customers = session.Query<Customer>().Fetch(c => c.Orders).ToList();

更多信息: http://mikehadlow.blogspot.com/2010/08/nhibernate-linq-eager-fetching.html

答案 1 :(得分:18)

只需使用它一次。

IList<Entity> GetDataFromDatabase()
{
    var query = session.Linq<Entity>();
    query.Expand("Property1");
    query.Expand("Property2");
    return query.ToList();
}

答案 2 :(得分:8)

据我所知,这不等同:SetFetchMode水合对象树,Expand方法检索笛卡尔积。

答案 3 :(得分:1)

根据@Mike Hadlow答案,提取下一级(孙子)你需要做的事情:

var customers = session.Query<Customer>() .FetchMany(c => c.Orders) .ThenFetchMany(o => o.OrderLines).ToList();