渴望在Entity Framework中加载多个子集合

时间:2012-08-31 21:29:30

标签: entity-framework

我是Entity Framework的新手,但有NHibernate的经验。我正在尝试加载一个有多个子集合的对象,我正试着急切地加载这两个子集合。

我认为我可以做类似的事情:

return DataContext.Users.Include("ChildCollection1").Include("ChildCollection2")

但是有没有办法将它分成两个查询来提高性能,就像我在NHibernate中使用Future一样?

4 个答案:

答案 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;
        }