Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao usar o Lazy properties e mapear os endereços

Segui exatamente como estava no material, baixei a versão correta do Microsoft.EntityFrameworkCore.Proxies (que no caso é a mesma versão do meu EF, se não dava problema) e mesmo assim estava dando uma exceção ao fazer o mapeamento:

CreateMap<Cinema, ReadCinemaDTO>().ForMember(dto => dto.Endereco, opt => opt.MapFrom(cinema => cinema.Endereco));

Depois de muito tentar achei a seguinte solução:

[HttpGet]
public IEnumerable<ReadCinemaDTO> RecuperarCinemas()
{
    return _mapper.Map<List<ReadCinemaDTO>>(_context.Cinemas.Include(cinema => cinema.Endereco));
}

Sim, esse é o método GET /cinema do CinemaController, nota-se que para cada Cinema no FilmeContext o método Include() adiciona a propriedade Cinema.Endereco e retorna juntamente no JSON, assim evitando o retorno null, exemplo:

{
    "id": 3,
    "nome": "Cinemark",
    "endereco": {
        "id": 2,
        "logradouro": "Rua das Alfaces",
        "numero": 221
    }
}

Se alguém souber uma outra maneira melhor, por favor comente...

1 resposta
solução!

Olá Leonardo!

Fico feliz em saber que você conseguiu encontrar uma solução para o problema que estava enfrentando ao usar o Lazy properties e mapear os endereços.

Sua solução de usar o método Include() é uma ótima alternativa para evitar o retorno null. É importante lembrar que existem várias maneiras de resolver um problema e o que funciona para um pode não funcionar para outro, então é sempre bom estar aberto a outras opções.

Obrigado por compartilhar sua solução conosco e espero que sua experiência com o curso ".NET 6: relacionando entidades" esteja sendo proveitosa.

Espero ter ajudado e bons estudos!