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

Migration Down da aula pareceu perigosa

Olá, Na aula de migration, onde a instrutora preenche o metodo 'Down' para reverter a inserção de dados que ela fez no metodo 'Up'. Parece que a instrução do metodo down ficou perigosa, no sentido de que pode apagar mais dados do que deveria, em caso que seja necessário reverter o que a migration alterou na tabela.

É feito um delete sem where. No estágio inicial que está o projeto da aula não tem problema, mas fiquei pensando em alguem aplicando isso em uma aplicacao profissional. Vai que por algum motivo precisem adicionar dados por uma migration, e no 'Down' colocam esse delete sem where, não apagaria somente os dados adicionados e sim TODOS dados da tabela, inclusive os que foram adicionados antes da inserção via migration. Claro que talvez isso não passaria em um code review, mas em empresas que não tem muito essa prática, pode deixar o desenvolvedor em apuros.

1 resposta
solução!

Olá, Ronald. Tudo bem?

Você está correto em sua observação. O comando DELETE FROM Artistas no método Down irá, de fato, apagar todos os dados da tabela Artistas, e não apenas os dados que foram inseridos pela migration.

Em um ambiente de produção, isso poderia ser potencialmente perigoso, pois poderia resultar na perda de dados importantes. No entanto, neste caso específico, a instrutora provavelmente optou por uma abordagem mais simples para fins de demonstração.

Em um cenário real, você provavelmente gostaria de ter uma maneira de reverter as alterações feitas por uma migration específica sem afetar os outros dados na tabela. Uma maneira de fazer isso seria adicionar uma cláusula WHERE ao comando DELETE, como você comentou, para que apenas os registros específicos inseridos pela migration sejam excluídos.

Por exemplo, se você tivesse um campo de identificação único para cada registro, você poderia fazer algo assim:

migrationBuilder.Sql("DELETE FROM Artistas WHERE Id = 1");

Isso excluiria apenas o registro com Id = 1, que foi o que você adicionou na migration.

No entanto, essa abordagem ainda tem suas limitações. Se os registros que você está inserindo não têm uma maneira fácil de serem identificados unicamente (por exemplo, se você estiver inserindo vários registros e não tiver um campo de identificação único), pode ser mais difícil reverter as alterações de uma maneira que não afete os outros dados na tabela.

Em resumo, você está correto em sua observação e é sempre importante considerar as implicações de seus comandos SQL, especialmente quando se trata de deletar dados. No entanto, em um ambiente de aprendizado como este, a instrutora provavelmente optou por uma abordagem mais simples para fins de demonstração.

Espero ter ajudado e bons estudos!