Как эффективно получить IList для объектов и их дочерних объектов в Entity Framework? - PullRequest
2 голосов
/ 17 октября 2010

То есть я хочу сделать это:

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

Но, очевидно, Entity Framework не поддерживает метод расширения ToList в предложении select.

Что мне делать? Любой другой метод, который я пробовал, заканчивает тем, что отправлял тонну запросов к базе данных при итерации.

Ответы [ 2 ]

1 голос
/ 17 октября 2010

Вы пробовали 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();
}
0 голосов
/ 17 октября 2010

Вы не можете вызвать ToList для части запроса, которая переведена на SQL, но вы можете сделать это локально, используя AsEnumerable:

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