Я пытаюсь создать проект с OData и Automapper на Asp.Net Core 2.2.
У меня есть две сущности с отношением многие ко многим.
public class User : IdentityUser<Guid>
{
[Required]
public string Name { get; set; }
[Required]
public string Surname { get; set; }
public List<UserRoom> UserRoom { get; set; } = new List<UserRoom>();
}
public class Room
{
public Guid Id { get; set; }
[Required]
public string Title { get; set; }
public string Description { get; set; }
public List<UserRoom> UserRoom { get; set; } = new List<UserRoom>();
}
public class UserRoom
{
public Guid UserId { get; set; }
public User User { get; set; }
public Guid RoomId { get; set; }
public Room Room { get; set; }
}
public class UserDto
{
public Guid Id { get; set; }
public string Email { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public List<RoomDto> Rooms { get; set; } = new List<RoomDto>();
}
public class RoomDto
{
public Guid Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public List<UserDto> Users { get; set; } = new List<UserDto>();
}
Я добавляю автомапер для проекта и использую код:
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<UserDto, User>();
CreateMap<User, UserDto>();
CreateMap<RoomDto, Room>();
CreateMap<UserRoom, UserDto>()
.ForMember(dto => dto.Id, opt => opt.MapFrom(x => x.User.Id))
.ForMember(dto => dto.Email, opt => opt.MapFrom(x => x.User.Email))
.ForMember(dto => dto.Name, opt => opt.MapFrom(x => x.User.Name))
.ForMember(dto => dto.Surname, opt => opt.MapFrom(x => x.User.Surname))
CreateMap<Room, RoomDto>()
.ForMember(dto => dto.Users, opt => opt.MapFrom(x => x.UserRoom));
}
}
И мой контроллер OData:
public class RoomController : ControllerBase
{
private readonly Context _context;
private readonly IMapper _mapper;
public RoomController(Context context, IMapper mapper)
{
_context = context;
_mapper = mapper;
}
[HttpGet]
[EnableQuery()]
public IEnumerable<RoomDto> Get()
{
return _mapper.Map<IEnumerable<RoomDto>>(_context.Rooms);
}
}
Итак, когда я создаю запрос на получение номеровЯ понимаю, но когда я использую в моем запросе расширение, это только пустой массив пользователей. Как я могу решить мою проблему?