Entity Framework Core: включить неработоспособность для отношений «многие ко многим».C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Entity Framework Core: включить неработоспособность для отношений «многие ко многим».

Сообщение Anonymous »

У меня возникли проблемы с тем, что .Include() не работает для отношений «многие ко многим» в Entity Framework Core. Моя настройка отлично работает для связей «один-ко-многим», но связанные сущности не загружаются для связей «многие-ко-многим».
Объекты:

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

public class AppUser : IdentityUser
{
public string Name { get; set; }
public List
 Photos { get; set; }
public List UserRoles { get; set; }
}

public class AppRole : IdentityRole
{
public ICollection UserRoles { get; set; }
}

public class AppUserRole : IdentityUserRole
{
public AppUser User { get; set; }
public AppRole Role { get; set; }
}
Конфигурация:

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

builder.Entity(b =>
{
b.HasKey(e => e.Id);

b.HasMany(ur => ur.UserRoles)
.WithOne(u => u.User)
.HasForeignKey(u => u.UserId)
.IsRequired();
});

builder.Entity(b =>
{
b.HasKey(e => e.Id);

b.HasMany(ur => ur.UserRoles)
.WithOne(u => u.Role)
.HasForeignKey(u => u.RoleId)
.IsRequired();
});

builder.Entity(b =>
{
b.HasOne(ur => ur.User)
.WithMany(u => u.UserRoles)
.HasForeignKey(ur => ur.UserId);
b.HasOne(ur => ur.Role)
.WithMany(r => r.UserRoles)
.HasForeignKey(ur => ur.RoleId);
});
Запрос:

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

var users = await _userManager.Users
.Include(u => u.Photos)
.Include(u => u.UserRoles)
.ThenInclude(ur => ur.Role)
.ToListAsync();
Из запроса я ожидаю список пользователей с ролями. Но список ролей пуст. Я добавил роли пользователю.
Примечание: .Include() для фотографий работает нормально, и это один из ко многим отношениям, но UserRoles не работает.

Подробнее здесь: https://stackoverflow.com/questions/787 ... lationship
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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