1
resposta

[Sugestão] Emparelhamento com projeto do curso anterior - .NET 6 e MySQL 8 e LazyLoadingProxies (Resolvido)

Olá, tudo bem? Gostaria de deixar uma dica para quem veio do curso anterior e percebeu as diferenças no projeto. Tente fazer as alterações manualmente! É uma ótima maneira de se desafiar e praticar o conteúdo aprendido ao longo do curso. Nesse post o Bruno Aragão deixou uma lista do que precisa ser alterado: https://cursos.alura.com.br/forum/topico-curso-perdido-220456

E sobre a ausência do LazyLoadingProxies, o Billi joes encontrou uma solução: https://cursos.alura.com.br/forum/topico-solucao-ausencia-do-metodo-uselazyloadingproxies-209700

No relacionamento entre Cinemas e Endereco, caso você tenha criado o atributo EnderecoId e feito o migration antes de fazer o relacionamento, provavelmente enfrentará problemas com foreign key. Uma solução: Remova o ultimo migration

    dotnet ef migrations remove

No Workbench, remova o atributo da tabela Cinemas:

ALTER TABLE Cinemas DROP COLUMN EnderecoId;

Siga os passos do instrutor na aula 2 - Relacionando Endereço e Cinema, crie novamente a migration e faça o database update. Dessa vez, tudo deve ocorrer sem mensagem de erros.

Após seguir estes passos, pode ocorrer da rota PUT apresentar o erro:

This MySqlConnection is already in use

É possível resolver isso adicionando .ToList() no retorno da rota como dito aqui: https://stackoverflow.com/questions/53627973/this-mysqlconnection-is-already-in-use

  [HttpGet]
  public IActionResult showCinemas()
  {
    return Ok(_context.Cinemas.ToList());
  }

Espero ter ajudado. Bons estudos!

1 resposta

Olá, Walter! Tudo bem?

Obrigado por compartilhar essas dicas valiosas para quem está vindo do curso anterior e precisa fazer as alterações manualmente. É uma excelente maneira de praticar e aplicar o conteúdo aprendido.

Sobre o relacionamento entre Cinemas e Endereco, é comum enfrentar problemas com foreign key caso o atributo EnderecoId tenha sido criado antes do relacionamento. A solução que você compartilhou de remover o último migration e o atributo da tabela Cinemas é bastante útil. Seguir os passos do instrutor na aula 2 - Relacionando Endereço e Cinema, criar novamente a migration e fazer o database update deve resolver o problema.

Quanto ao erro "This MySqlConnection is already in use" ao acessar a rota PUT, a solução de adicionar ".ToList()" no retorno da rota é uma boa alternativa. Isso garante que a conexão com o banco de dados seja liberada corretamente.

Espero ter ajudado e bons estudos!