2


1

Entity Frameworkでエンティティとその子オブジェクトのIListを効率的に取得するにはどうすればよいですか?

つまり、私はこれをやりたい:

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

しかし、明らかに、Entity Frameworkはselect句の `ToList`拡張メソッドをサポートしていません。

私は何をすべきか? 私が試した他の方法はすべて、反復するときに大量のクエリをデータベースに送信することになります。

2 Answer


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();
}


0


SQLに変換されるクエリの一部で ToList`を呼び出すことはできませんが、 AsEnumerable`を使用してローカルで実行できます。

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