[英]Selective eager loading in Entity Framework
是否可以限制急切加载Include的关联实体的数量?
例如,我有一个多边对象的作者和书籍实体,我想加载所有作者和他们的最后一本书
谢谢。
您无法使用.Include语法执行此操作,但您可以使用投影执行此操作。
var list = (from a in data.Authors
select new
{
Author = a,
Books = (from b in a.Books select b).Take(1)
}).ToList();
当你得到结果时,物化器将使用它的关系修正,你将能够使用list.Author.Books。
请参阅我的问题: LINQ to Entities(实体框架)加入和.Include冲突
是的你可以。 您将通过两个查询来完成它。
首先选择你的作者。
List<Authors> authors = context.Authors.ToList();
第二,选择你的书。
List<Books> books=
( from b in context.Books
group b by b.AuthorName into groupedByAuthor
let maxDate = groupedByAuthor.Max(c=>c.PublishDate)
...
).ToList
当您这样做时,EF将为作者填写您的书。 请注意,您的参考文献不会被“加载”,但您的1本书将在那里。
试试吧...... EF的欢乐魔力。
我这样做:
var list = (from a in Authors.Include("Books")
join b in books.OrderByDesc(b => b.PublishedDate).Take(1)
on a.Id equals b.AuthorId into bo
select new { Author = a, Books = b }).ToList();
List<Author> authors = list.Select(o => o.Author);
其中作者是您的实体名称和作者的导航属性中的书籍。 你仍然有一个EntityCollection书籍,但它应该只包含1个元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.