>挑战:在实体框架核心中使用Include
时,根据嵌套导航属性中的属性过滤主查询可能很棘手。本指南提供了一个解决方案。
解决方案:利用过滤的利用包括
>>实体框架核心5引入了过滤的Include,这是一种强大的功能,启用了随附的导航属性的过滤。 受支持的操作员包括Where
,OrderBy
/OrderByDescending
,Skip
和Take
。
实现过滤的包括:
此查询检索博客及其相关帖子,但仅包括作者名称为“我”的帖子。 注意
<code class="language-csharp">var blogs = context.Blogs .Include(blog => blog.Posts.Where(post => post.Author == "me")) .ThenInclude(post => post.Author) .ToList();</code>
子句。Where
>
Include
每个导航每个导航
Include
关系修复和过滤包括:>
注意到关系修复。 它可能会在导航属性的集合中增加额外的条目,并有可能导致意外结果。 过滤包括与直接查询过滤:> 仅影响随附的导航属性,而不是主要查询。 要根据导航属性过滤主查询,请直接在
>或>上直接使用Filtered Include
>。
Where
DbSet
>过滤包括和投影:IQueryable
>
语句,甚至是过滤的语句。 但是,如果可以将应用于投影中的实体,则仍将应用。
以上是如何在实体框架核心中过滤包含的导航属性?的详细内容。更多信息请关注PHP中文网其他相关文章!