Как сгладить коллекции Entity Core «многие ко многим» с помощью LinqC#

Место общения программистов C#
Ответить
Anonymous
 Как сгладить коллекции Entity Core «многие ко многим» с помощью Linq

Сообщение Anonymous »

Я не могу понять, как сгладить коллекцию «многие ко многим». Сущности предназначены для таблиц идентификаторов, созданных с помощью Entity Framework Core. Они содержат свойства навигации, которые я добавил вручную, поскольку объекты Identity не включают их по умолчанию (вместе с кодом построителя настраиваемых моделей, который не показан)

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

public class AppUser : IdentityUser {

public string FirstName { get; set; }
public string LastName { get; set; }

public virtual List UserRoles { get; set; } = new List();

}

public class AppRole : IdentityRole {

public virtual List UserRoles { get; set; } = new List();

}

public class AppUserRole : IdentityUserRole {

public virtual AppUser User { get; set; }
public virtual AppRole Role { get; set; }

}
Это вызов в моем репозитории:

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

public async Task GetAllWithRoles()
{
return await _dbSet
.AsNoTracking()
.Include(u => u.UserRoles)
.ThenInclude(ur => ur.Role)
.ToListAsync();
}
Приведенный выше вызов возвращает эту структуру:

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

[
{
"firstName": "XXXX",
"lastName": "YYYYY",
"userRoles": [
{
"role": {
"userRoles": [],
"id": 1,
"name": "xxx",
"normalizedName": "xxxx",
"concurrencyStamp": "1617fe40-77e2-46cb-9c1c-df597d09775c"
},
"userId": 1,
"roleId": 1
}
]
}
]
Я хочу вот этого:

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

[
{
"firstName": "Alex",
"lastName": "Florin",
"RoleName": "Role1",
},
{
"firstName": "Alex",
"lastName": "Florin",
"RoleName": "Role2",
},
{
"firstName": "Jon",
"lastName": "Smith",
"RoleName": "Role1",
},
]
Я хочу сгладить коллекцию. Я изучил SelectMany, но не могу понять, как использовать его с коллекцией «многие ко многим», поскольку я новичок в Linq. И я знаю, что тип функции вызова необходимо изменить на модель представления, соответствующую моей желаемой структуре.

Automapper — еще один вариант, поскольку я использую его для создания моделей представления для моих более простых объектов, но я не понимаю, как настроить его для выравнивания отношений «многие ко многим».

Подробнее здесь: https://stackoverflow.com/questions/495 ... using-linq
Ответить

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

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

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

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

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