如何有效地获取实体框架中的实体及其子对象列表?

时间:2010-10-17 19:22:12

标签: .net entity-framework iqueryable

也就是说,我想这样做:

var lists = (from list in this.DB.Lists
             select new
             {
                 List = list,
                 Items = list.ListItems.ToList(),
             }).ToList();

但是,很明显,实体框架不支持select子句中的ToList扩展方法。

我该怎么办?我试过的任何其他方法都会在迭代时向数据库发送大量查询。

2 个答案:

答案 0 :(得分:1)

您是否尝试过Include扩展方法?

var lists = (from list in this.DB.Lists.Include("ListItems")
             select list).ToList(); 

foreach(var item in lists)
{
   // there shouldn't be any DB calls here.
   var items = list.ListItems.ToList();
}

答案 1 :(得分:0)

您无法在转换为SQL的查询部分调用ToList,但您可以使用AsEnumerable在本地执行此操作:

var lists = (from list in this.DB.Lists.AsEnumerable()
             select new
             {
                 List = list,
                 Items = list.ListItemsItems.ToList()
             }).ToList();