使用EF核心包含时排除已删除的子级

时间:2020-01-20 03:57:10

标签: linq asp.net-core entity-framework-core

这是我的实体结构:

enter image description here
我获得所有子测验课程的代码:

var course = await Db.Courses.Include(x => x.Tests).FirstOrDefaultAsync(y => y.CourseId == id);

它包括与课程相关的所有子级测试。但我想包括所有状态未删除的测试(IsDeleted = false)。为此,请使用以下代码:

var course = await Db.Courses.Include(x => x.Tests.Where(y=>!y.IsDeleted)).FirstOrDefaultAsync(y => y.CourseId == id);

但是它并不排除已删除的测试。有人可以告诉我如何排除已删除的测试吗?

1 个答案:

答案 0 :(得分:0)

常规包含无法与过滤器一起使用。您需要从nuget下载Z.EntityFramework.Plus.EFCore。并使用下面的代码

var course = await Db.Courses.Where(y => y.CourseId == id).IncludeFilter(x => x.Tests.Where(y => y.IsDeleted == false)).FirstOrDefaultAsync;