Я хочу сопоставить свои многие объекты с 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;
});
Но это устанавливает неправильные значения потому что один пользователь может иметь много ролей. Как я могу это сделать?