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.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!