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

发布于 2024-09-28 05:00:40 字数 335 浏览 2 评论 0原文

也就是说,我想这样做:

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

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

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

That is, I want to do this:

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

But, obviously, the Entity Framework doesn't support the ToList extension method in the select clause.

What should I do? Any other method I've tried ends up sending a ton of queries to the database when iterating.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

压抑⊿情绪 2024-10-05 05:00:40

您是否尝试过 Include etension 方法?

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

Have you tried the Include etension method?

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();
}
清晰传感 2024-10-05 05:00:40

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

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

You can't call ToList on the part of the query that is translated to SQL, but you can do it locally, using AsEnumerable:

var lists = (from list in this.DB.Lists.AsEnumerable()
             select new
             {
                 List = list,
                 Items = list.ListItemsItems.ToList()
             }).ToList();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文