Проектирование включенных объектов - PullRequest
2 голосов
/ 28 мая 2020

Я ищу метод для проецирования включенных объектов в EntityFramework Core таким образом, чтобы мы могли проецировать объекты (функция выбора):

[HttpGet]
    public async Task<IActionResult> GetBooks()
    {
        return Json(new { data = await _db.Books.Select(b => _mapper.Map<BookDto>(b)).ToListAsync() });
    }

Вот мой код, в котором я пытался проецировать включенные объекты, но не действительный:

[HttpGet]
    public async Task<JsonResult> GetMessagesAsync()
    {
        var msgs = await _db.Messages.OrderBy(m => m.Sent).Include(m => _mapper.Map<AppUserDto>(m.AppUser)).ToListAsync();
        return Json(new { data = msgs });
    }

EDIT1: я хочу проецировать включенные объекты AppUser в AppUserDto.

EDIT2:

public MappingProfile()
    {
        CreateMap<Book, BookDto>();
        CreateMap<BookDto, Book>();

        CreateMap<Client, ClientDto>();
        CreateMap<ClientDto, Client>();

        CreateMap<Reservation, ReservationDto>();
        CreateMap<ReservationDto, Reservation>();

        CreateMap<AppUser, AppUserDto>();
        CreateMap<AppUserDto, AppUser>();
    }

1 Ответ

1 голос
/ 28 мая 2020

Если ваш картограф настроен правильно, вы сможете просто сделать следующее:

var msgs = await _db.Messages
     .OrderBy(m => m.Sent)
     .Include(m => m.AppUser)
     .Select(m => _mapper.Map<MessageDto>(m))
     .ToListAsync();

Таким образом, ваш MessageDto должен будет иметь свойство AppUserDto AppUser среди прочего.

...