Quando executo PM> Remove-Migration -context BloggingContext
no VS2015 com um projeto ASP.NET Core usando o EF Core, obtenho o seguinte erro:
System.InvalidOperationException: The migration '20160703192724_MyFirstMigration' has already been applied to the database. Unapply it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration. at Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.RemoveMigration(String projectDir, String rootNamespace, Boolean force)
at Microsoft.EntityFrameworkCore.Design.MigrationsOperations.RemoveMigration(String contextType, Boolean force)
at Microsoft.EntityFrameworkCore.Tools.Cli.MigrationsRemoveCommand.<>c__DisplayClass0_0.<Configure>b__0()
at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
at Microsoft.EntityFrameworkCore.Tools.Cli.Program.Main(String[] args)
The migration '20160703192724_MyFirstMigration' has already been applied to the database. Unapply it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration.
Como posso cancelar a aplicação? Estou usando a versão mais recente do ASP.NET Core 1.0, EF Core e VS2015 Update 3.
-force
no finalRespostas:
Usar:
CLI
> dotnet ef database update <previous-migration-name>
Console do Gerenciador de Pacotes
PM> Update-Database <previous-migration-name>
Exemplo:
PM> Update-Database MyInitialMigration
Em seguida, tente remover a última migração.
A remoção da migração sem atualização do banco de dados não funciona porque você aplicou alterações no banco de dados.
Se estiver usando o PMC, tente: PM> update-database 0 Isso limpará o banco de dados e permitirá remover o instantâneo de migração da sua solução
fonte
dotnet ef database update MyFirstMigration --context BloggingContext
que funcionou com sucesso. Então eu corri edotnet ef migrations remove --context BloggingContext
me deu a mesma mensagem de erro que no meu postMyFirstMigration
. Se essa for a primeira migração (como o nome indica), você poderá usardotnet ef database update 0
para reverter (não aplicar) todas as migrações do banco de dados. Você deve ser capaz de executardotnet ef migrations remove
.dotnet ef migrations remove
depois dissoPara remover completamente todas as migrações e começar tudo de novo, faça o seguinte:
fonte
dotnet ef database update 0
, mas a execuçãodotnet ef migrations remove
posterior removerá a migração padrão do Identity, o que pode não ser o desejado.dotnet ef database update 0
! Eu não tinha visto este mencionados em qualquer lugar ...The migration '20180618103514_InitialMigration' has already been applied to the database. Revert it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration.
Você ainda pode usar o
Update-Database
comandoNo entanto, a julgar pelo nome da sua migração, suponho que seja a primeira migração para que o comando possa não funcionar. Você deve poder excluir a entrada da
__MigrationHistory
tabela no seu banco de dados e executar oRemove-Migration
comando novamente. Você também pode excluir o arquivo de migração e apenas começar novamente.fonte
Update-Database
do Package Management Console oudotnet ef database update
do prompt de comando no diretório do projeto.<migration name>
deve ser o nome da migração para a qual você deseja voltar (ou seja, provavelmente a migração anterior à que você estragou tudo), não o nome da migração que você deseja desfazer.Para cancelar a aplicação de uma migração específica :
Para cancelar a aplicação de todas as migrações :
Para remover a última migração:
Para remover todas as migrações:
basta remover a
Migrations
pasta.Para remover as últimas migrações (não todas):
Não há um comando para remover várias migrações e não podemos apenas remover esses poucos
migrations
e seus*.designer.cs
arquivos, pois precisamos manter o arquivo de instantâneo no estado consistente. Precisamos remover as migrações uma a uma (vejaTo remove last migration
acima).Para cancelar a inscrição e remover a última migração:
fonte
unapply
todas essas postagens. Apenas me atingiu que não é um termo técnico, é a palavraun - apply
Para reverter a última migração aplicada, você deve (comandos do console do gerenciador de pacotes):
PM> Update-Database <prior-migration-name>
PM> Remove-Migration
UPD : A segunda etapa parece não ser necessária nas versões mais recentes do Visual Studio (2017).
fonte
Remove-Migration
sem problemas. Não sei ao certo o que você disse "será reaplicado novamente no próximo passo"!dbContext.Database.Migrate()
em seus startup.csSimplesmente você pode segmentar uma migração por valor
Então vá em frente e remova-o
fonte
Para "cancelar a aplicação" da migração mais recente (depois?) Depois de já ter sido aplicada ao banco de dados:
Espero que isso ajude e seja aplicável a qualquer migração no projeto ... Testei isso apenas na migração mais recente ...
Feliz codificação!
fonte
No Console do Gerenciador de Pacotes:
Update-Database Your_Migration_You_Want_To_Revert_To
Mais opções e explicações sobre como reverter migrações podem ser vistas aqui
fonte
Você deve excluir o registro de migração '20160703192724_MyFirstMigration' da tabela '_EFMigrationsHistory' .
caso contrário, este comando removerá a migração e excluirá a pasta de migrações:
fonte
Em geral, se você estiver usando o Package Manager Console, a maneira correta de remover uma migração específica é referenciando o nome da migração.
Outra maneira de remover a última migração aplicada de acordo com os documentos é usando o comando:
Este comando deve ser executado no prompt de comando do desenvolvedor ( como abrir o prompt de comando ) dentro do diretório da solução.
Por exemplo, se o seu aplicativo estiver dentro do nome "Aplicativo" e estiver na pasta c: \ Projetos. Então seu caminho deve ser:
fonte
Para cancelar a aplicação de uma migração no EF Core 1.0, use o comando:
atualização do banco de dados dotnet ef {migration_name}
Use o nome da migração até a qual você deseja preservar suas alterações. A lista de nomes da migração pode ser encontrada usando:
lista de migrações dotnet ef
fonte
Para reverter todas as migrações aplicadas ao DB, execute:
Deve ser seguido com a execução
Remove-Migration
quantas vezes houver arquivos de migração visíveis no diretório de migração. O comando exclui a migração mais recente e também atualiza o instantâneo.fonte
primeiro, execute o seguinte comando:
e execute este:
Terminar
fonte
fonte
1. encontre a tabela "dbo._EFMigrationsHistory" e exclua o registro de migração que deseja remover. 2. execute "remove-migration" no PM (Console do Gerenciador de Pacotes). Funciona para mim.
fonte