【发布时间】:2020-04-17 14:43:14
【问题描述】:
我在 EF Core 中有一个使用如下结构的实体:
Course 有一个实体 CourseUserRoles,它具有 CourseId、UserId 和 RoleId >.
CourseViewModel 与 Course 具有相同的结构,除了 CourseUserRoles 之外,它有两个布尔值 IsAdministrator 和 IsContributor,与 RoleId 相关。
我正在尝试进行一个查询,该查询不会为所查询的每门课程带来所有 CourseUserRoles,而只会为该用户提供特定的课程。
我看到下面的语法是正确的:
query = query.Include(x => x.CourseUserRoles.Where(y => y.UserId == userId));
查询试图返回课程列表的地方,我只想包括与用户具有相同 ID 的课程。 问题是上面抛出了异常。
是否可以仅在课程具有 UserId 时包含 CourseUserRoles?如果没有,它将返回 null 或空列表。
【问题讨论】:
-
我认为不可能在 include 方法中传递查询。但是有一个扩展库(EntityFrameworkplus),增加了这个功能entityframework-plus.net/query-include-filter
-
如果你的数据模型代表这种关系,这意味着你的用户有一个角色和/或案例的集合,你根本不需要查询。这将是在您访问集合时仅加载一个用户的课程的默认行为。
标签: c# .net linq .net-core entity-framework-core