我在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()应该可以,但是不能。
学生来自“人”,但是所有重要的成员都在“学生”中。课程就是课程。
出了点问题,我也不知道...
答案 0 :(得分:0)
在设计一个小的示例项目时,我偶然发现了解决方案。即使我已阅读过有关IntelliSense的错误,也仍然欺骗了我。
https://docs.microsoft.com/en-us/ef/core/querying/related-data#including-multiple-levels