2
respostas

[Dúvida] Remove Migration [e aconselhavel ?

Tava pesquisando, e pelo que vi não é nenhum pouco recomendado remover Migration desse modo, depois do update é não deletar mais a Migration, a não ser que tudo seja feito com extremo alinhamento, porque ela fica no histórico. Acredito que poderiam ter mostrado o jeito real de fazer isso no vídeo. Se alguém puder me explica melhor sobre isso agradeço tbm

2 respostas

Oii, Guilherme! Tudo bem?

No dia a dia de uma pessoa desenvolvedora, mexer no histórico de migrações pode dar um frio na barriga, especialmente quando pensamos em ambientes de produção. Você tem razão em um ponto: o histórico de migrações é o "diário de bordo" do seu banco de dados e deve ser tratado com cuidado.

O comando Remove-Migration:

O Remove-Migration tem uma função muito específica: ele remove a última migração que foi criada, desde que ela ainda não tenha sido aplicada permanentemente ao banco de dados ou compartilhada com o restante da equipe.

Quando é seguro usar?

  • Fase de desenvolvimento local: Se você acabou de rodar o Add-Migration, percebeu que esqueceu um campo ou que o nome da tabela está errado, e ainda não rodou o Update-Database, o uso é totalmente seguro e recomendado.
  • Erro no Update-Database: Como aconteceu na aula, se a migração falhou ao tentar ser aplicada, o banco de dados não "registrou" essa migração na tabela interna __EFMigrationsHistory. Nesse caso, removê-la pra corrigir o código e gerar uma nova é uma prática comum para manter o código limpo.

Por que evitar em ambientes compartilhados?

Se você rodar o Update-Database, a migração for bem-sucedida e você enviar esse código para o GitHub, outras pessoas da sua equipe vão baixar essa migração e aplicá-la nos bancos de dados delas. Se você decidir remover essa migração do seu projeto local depois disso, causará um conflito enorme, pois o banco de dados dos seus colegas estará esperando uma migração que "sumiu" do código.

O instrutor usou o Remove-Migration porque, naquele momento, a migração não tinha sido concluída com sucesso no banco (o erro de chave estrangeira impediu o registro), então tecnicamente ela era apenas um arquivo "órfão" no projeto.

Espero que isso tenha esclarecido sua dúvida.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Oi, muito obrigado. Só não entendi a parte que tu disse q o instrutor fez certo, porque ele realizou:

  1. Add migration
  2. Update database
  3. Remove Migration
    Mas nesse caso o ideal seria não remover né ? tanto que pelo que entendi como fica salvo no EFMigrationsHistory, e daí ele teve que remover a coluna alter table sessoes drop column CinemaId; para não dar erro pelo que entendi, Se puder me ajudar agradeço