C#Core 2.1 EF多对多关系查询

时间:2019-03-14 15:38:18

标签: c# many-to-many entity-framework-core

我在C#Core EF中的多对多联接表中遇到问题。我正在将.NET Framework代码转换为.NET Core 2.1 这有点棘手,因为必须在dbcontext中使用随附的模型类手动定义这些联接表 而不像以前那样在后台处理。

我不知道如何进行查询。渴望加载。

例如,我以前只是使用

包含相关数据
db.Student.Include(x => x.Course).Where(...

现在不起作用了,因为我只能加载联接表数据

db.Student.Include(x => x.CourseStudent).Where(...

如果我愿意

db.Student.Include(x => x.CourseStudent).ThenInclude(y => y.Course).Where(...

然后我得到错误:

The Include property lambda expression 'x => {from CourseStudent y in x.Course select [y].Course}' is invalid. The expression should represent a property access: 't => t.MyProperty'. To target navigations declared on derived types, specify an explicitly typed lambda parameter of the target type, E.g. '(Derived d) => d.MyProperty'. For more information on including related data, see http://go.microsoft.com/fwlink/?LinkID=746393.

我已经阅读了该页面,并且那里没有任何有用的信息。它说.thenInclude()应该可以,但是不能。

学生来自“人”,但是所有重要的成员都在“学生”中。课程就是课程。

出了点问题,我也不知道...

1 个答案:

答案 0 :(得分:0)

在设计一个小的示例项目时,我偶然发现了解决方案。即使我已阅读过有关IntelliSense的错误,也仍然欺骗了我。

https://docs.microsoft.com/en-us/ef/core/querying/related-data#including-multiple-levels