Как сопоставить многие со многими свойствами с помощью автоматического инструмента? - PullRequest
1 голос
/ 17 января 2020

Я хочу сопоставить свои многие объекты с AutoMapper, но не смог создать.

Я использую версию Entity Framework Core 3.0.

Мои объекты:

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<UserRole> UserRoles { get; set; }
}

public class UserRole
{
    public int UserId { get; set; }
    public int RoleId { get; set; }
    public DateTime DateAttached { get; set; }      
}

public class Role
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<UserRole> UserRoles { get; set; }
}

Мои данные:

public class RolesOfUserViewModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime DateAttached { get; set; }
    public ICollection<UserRole> UserRoles { get; set; }
}

Итак, я отдыхаю конечная точка для получения ролей пользователя со свойством DateAttached из таблицы «многие ко многим».

var x = await _context.Users
    .Include(role => role.UserRoles)
    .Where(user => user.userRoles.Any(s => s.RoleId == id))
    .ToListAsync();

Я создал карту для этих классов:

CreateMap<Role, RolesOfUserViewModel>()
    .AfterMap((source, destination) =>
    {
        foreach (var userRole in source.UserRoles)
            destination.DateAttached = userRole.DateAttached;
    });

Но это устанавливает неправильные значения потому что один пользователь может иметь много ролей. Как я могу это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...