C # Core 2.1 для запроса отношений «многие ко многим»

#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