#c# #many-to-many #entity-framework-core
#c# #»многие ко многим» #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() должен работать, но это не так.
Student является производным от Person, но все важные элементы находятся в Student. Курс — это просто курс.
Что-то не так, и я не знаю, что….
Комментарии:
1. Предоставленного вами кода недостаточно, чтобы точно определить проблему. Вам лучше указать здесь контекст вашей базы данных и то, как вы настроили отношения между вашими объектами
2. Вы правы. Я сделаю это!
3. При разработке небольшого примера проекта для вас я наткнулся на решение. Это была ошибка IntelliSense, которая обманула меня, хотя я читал об этом…. Итак, проблема решена. Могу ли я отменить этот вопрос или что-то в этомроде….
Ответ №1:
При разработке небольшого примера проекта я наткнулся на решение. Это была ошибка IntelliSense, которая обманула меня, хотя я читал об этом…. Итак, проблема решена.
https://learn.microsoft.com/en-us/ef/core/querying/related-data#including-multiple-levels