Entity Framework Core 8.0.10 не загружает связанные данныеC#

Место общения программистов C#
Ответить
Anonymous
 Entity Framework Core 8.0.10 не загружает связанные данные

Сообщение Anonymous »

У меня есть модели пользователя и роли. Если между обеими моделями создается связь «многие-ко-многим», представленная коллекцией на обоих концах:

Код: Выделить всё

ICollection Users {get;set:} in the Role table
ICollection Roles {get;set:} in the User table
Согласно документации, EF по умолчанию генерирует в БД Sql Server или другом движке промежуточную таблицу, содержащую внешние ключи обеих таблиц.
Когда я пытаюсь сделать запрос, например:

Код: Выделить всё

var user = await context.Users.Include(x=> x.Roles).SingleOrDefault(x=> x.UserId == 1);
Он не загружает коллекцию ролей, связанных с пользователем. Хочу уточнить, что пользователю 1 назначено несколько ролей в БД.
Но если я запущу следующий код:

Код: Выделить всё

var user = await context.Users
.AsNoTracking()
.Include(x=> x.Roles).SingleOrDefault(x=> x.UserId == 1);
Коллекция Ролей содержит роли, назначенные пользователю. Мне нужен запрос не для отправки его во представление, а для взаимодействия с данными о пользователях и ролях, полученных из БД, либо для добавления новых ролей, либо для удаления одной из них, либо для редактирования каких-то пользовательских данных и т.д.
Я не знаю, сталкивался ли кто-нибудь с таким же опытом, но такое поведение EF 8.0.10 кажется мне странным.
Если кто-нибудь может мне помочь по этому вопросу, я был бы очень рад благодарен.
Я использовал EntityFramework версии 7.0.11, и тест тоже не сработал.
Я вернулся к версии 8.0.10 и попытался явно загрузить коллекции:< /p>

Код: Выделить всё

await context.Entry ( user ).Collection ( x => x.Roles ).LoadAsync ();
и это тоже не сработало. Данные не загружаются.
Мне просто нужно попробовать отложенную загрузку, установив прокси, но это не то, что мне нужно.

Подробнее здесь: https://stackoverflow.com/questions/791 ... lated-data
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»