Após a alteração citada na aula "Lazy Properties", ao utilizar o método get para cinemas, ocorre o erro de exceção sem tratamento. Notei também que outras pessoas tiveram esse mesmo erro, porém não obtiveram resposta de vocês. Peço atenção neste ponto, visto que inclusive o código escrito na aula está divergente do citado no vídeo, e nenhum dos dois códigos funciona. É necessário uma atenção maior antes de postar cursos com esse tipo de erro, já que venho enfrentado esses problemas em diversos cursos da Alura.
public CinemaProfile()
{
CreateMap<CreateCinemaDto, Cinema>();
CreateMap<Cinema, ReadCinemaDto>()
.ForMember(cinemaDto => cinemaDto.ReadEnderecoDto,
opt => opt.MapFrom(cinema => cinema.Endereco));
CreateMap<UpdateCinemaDto, Cinema>();
}
[ApiController]
[Route("[controller]")]
public class CinemaController : ControllerBase
{
private FilmeContext _context;
private IMapper _mapper;
public CinemaController(FilmeContext context, IMapper mapper)
{
_context = context;
_mapper = mapper;
}
[HttpPost]
public IActionResult AdicionaCinema([FromBody] CreateCinemaDto cinemaDto)
{
Cinema cinema = _mapper.Map<Cinema>(cinemaDto);
_context.Cinemas.Add(cinema);
_context.SaveChanges();
return CreatedAtAction(nameof(RecuperaCinemasPorId), new { Id = cinema.Id }, cinemaDto);
}
[HttpGet]
public IEnumerable<ReadCinemaDto> RecuperaCinemas()
{
return _mapper.Map<List<ReadCinemaDto>>(_context.Cinemas.ToList());
}
[HttpGet("{id}")]
public IActionResult RecuperaCinemasPorId(int id)
{
Cinema cinema = _context.Cinemas.FirstOrDefault(cinema => cinema.Id == id);
if (cinema != null)
{
ReadCinemaDto cinemaDto = _mapper.Map<ReadCinemaDto>(cinema);
return Ok(cinemaDto);
}
return NotFound();
}
[HttpPut("{id}")]
public IActionResult AtualizaCinema(int id, [FromBody] UpdateCinemaDto cinemaDto)
{
Cinema cinema = _context.Cinemas.FirstOrDefault(cinema => cinema.Id == id);
if (cinema == null)
{
return NotFound();
}
_mapper.Map(cinemaDto, cinema);
_context.SaveChanges();
return NoContent();
}
[HttpDelete("{id}")]
public IActionResult DeletaCinema(int id)
{
Cinema cinema = _context.Cinemas.FirstOrDefault(cinema => cinema.Id == id);
if (cinema == null)
{
return NotFound();
}
_context.Remove(cinema);
_context.SaveChanges();
return NoContent();
}