Entity Framework - Iniciar novamente - Desfazer / reverter todas as migrações


168

Por alguma razão, minhas migrações parecem ter sido confusas / corrompidas / o que seja. Estou no ponto em que só quero começar de novo, então existe uma maneira de desfazer completamente todas as migrações, apagar o histórico e excluir o código de migração, então estou de volta à estaca zero?

por exemplo) PM> Disable-MigrationsouRollback-Migrations

Não quero "atualizar" para uma etapa de migração original (ou seja, algo como um InitialSchemadestino) porque não consigo mais encontrá-la.

Respostas:


358

Você pode reverter para qualquer migração usando:

Update-Database -TargetMigration:"MigrationName"

Se você deseja reverter todas as migrações, poderá usar:

Update-Database -TargetMigration:0

ou equivalente:

Update-Database -TargetMigration:$InitialDatabase 

Em alguns casos, você também pode excluir o banco de dados e todas as classes de migração.


6
como sempre, você é o melhor.
drzaus

2
Eu não entendo, o OP diz especificamente "Não quero" atualizar "para uma etapa de migração original (ou seja, algo como um destino InitialSchema) porque não consigo mais encontrá-lo." Como essa resposta faz o que ele quer? O que eu esperava que acontecesse é que estaria em um estado em que preciso enable-migrationsnovamente. Isso é obviamente útil, mas eles cumprem o que o OP está pedindo? (Por favor, não responda com "bem, ele aceitou a resposta." Estou tentando entender isso, não seja um espertinho).
Michael Blackburn

@ MichaelBlackburn: Se você deseja executar enable-migrationsnovamente e está desenvolvendo o banco de dados a partir do zero, basta seguir a última frase: excluir banco de dados e todo o código relacionado à migração. Se você começou a usar migrações com o banco de dados existente, primeiro precisa reverter todas as migrações usando o segundo ou o terceiro comando e exclua a MigrationHistorytabela e todo o código relacionado à migração. Deve levá-lo à posição inicial. Você também pode iniciar o banco de dados a partir do backup (antes de usar as migrações) e excluir todo o código relacionado à migração.
Ladislav Mrnka

4
@ MichaelBlackburn: o que eu quis dizer é que todas as outras soluções que eu vi lhe dizem para atualizar de volta para sua primeira migração nomeada , mas meu problema era que não havia uma migração limpa inicial para atualizar (voltar) para - eu apenas queria se livrar de todas as migrações, independentemente do método. Portanto, esta resposta abordou minha preocupação com-TargetMigration:0
drzaus


8

Para ficar claro, se você estiver usando o LocalDb, quando quiser começar do zero, exclua o banco de dados pelo Explorador de Banco de Dados e digite enable-migrations -forceo Console do Gerenciador de Pacotes. Não exclua o banco de dados pela pasta App_Data, ou você terá o seguinte problema .


2
Tenha cuidado ao fazer isso, pois ele substituirá Migrations \ Configuration.cs sem aviso!
cgatian

Obrigado pelo aviso, eu praticamente soltei o código pela primeira vez depois de um tempo, é bom ter todo o seu código em uma única vez, colocar, ter controle de versão do seu banco de dados por si só, mas não vi nenhum outro grande benefício e voltou ao banco de dados primeiro. Eu uso o Red Gate Sql Compare para rastrear todos os deltas.
Brian Ogden


0

Está escrito errado na documentação deles, eu acho, para mim eu usei

Update-Database -Target MigrationName
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.