我是Entity Framework的新手,但有NHibernate的经验。我正在尝试加载一个有多个子集合的对象,我正试着急切地加载这两个子集合。
我认为我可以做类似的事情:
return DataContext.Users.Include("ChildCollection1").Include("ChildCollection2")
但是有没有办法将它分成两个查询来提高性能,就像我在NHibernate中使用Future一样?
答案 0 :(得分:1)
我对NH一无所知。但你的意思是EF中的显式加载吗?
Context.Entry(aUser).Collection(u => u.ChildCollectionX).Load();
答案 1 :(得分:0)
正如here所解释的那样,NHibernate中的未来是一种将查询执行推迟到稍后的方式,以便批量执行查询。它使用NHibernate' MultiQuery feature。
实体框架没有任何看起来像这样的东西。到目前为止,Include
是一次性加载子集合的唯一选项。
road map,虽然不是很详细,但没有显示任何朝这个方向的计划。
答案 2 :(得分:0)
我到目前为止找到的最佳解决方案是EntityFramework.Extended库中的FutureQueries功能:https://github.com/loresoft/EntityFramework.Extended/wiki/Future-Queries。
答案 3 :(得分:-1)
我无法使用lambdas,但它适用于字符串路径......
using (var db = new CMWebTestContext())
{
var q = db.WebTestResults.Include("TestCollection.TransactionCollection.PageCollection");
var r = q.ToList();
return r;
}