Eu reduzi minhas migrações, usei IgnoreChanges
na migração inicial, mas agora quero excluir todas as minhas migrações e começar com uma migração inicial com toda a lógica.
Quando eu excluo as migrações na pasta e tento e Add-Migration
ele não gera um arquivo completo (está vazio - porque eu não fiz nenhuma alteração desde a minha última, mas agora excluída) migração.
Existe algum comando Desativar Migrações , para que eu possa executar novamente Enable-Migrations
?
Respostas:
Você precisa :
__MigrationHistory
tabela no seu banco de dados (pode estar em tabelas do sistema); EntãoExecute o seguinte comando no console do gerenciador de pacotes:
Use com ou sem
-EnableAutomaticMigrations
E, finalmente, você pode executar:
fonte
O problema: você reduziu suas migrações e deseja redefini-las sem excluir as tabelas existentes.
O Problema: Você não pode redefinir migrações com tabelas existentes no banco de dados, pois a EF deseja criar as tabelas do zero.
O que fazer:
Exclua as migrações existentes da tabela Migrations_History.
Exclua as migrações existentes da pasta Migrations.
Execute Redefinição de adição e migração. Isso criará uma migração na sua pasta Migração, que inclui a criação de tabelas (mas não será executada para evitar erros.)
Agora você precisa criar a linha inicial na tabela MigrationHistory para que o EF tenha uma captura instantânea do estado atual. A EF fará isso se você aplicar uma migração. No entanto, você não pode aplicar a migração que você acabou de fazer, pois as tabelas já existem no seu banco de dados. Então vá para a migração e comente todo o código dentro do método "Up".
Agora execute o update-database. Ele aplicará a migração (sem alterar o banco de dados) e criará uma linha de captura instantânea em MigrationHistory.
Agora você redefiniu suas migrações e pode continuar com as migrações normais.
fonte
E se
no Console do Gerenciador de Pacotes? Ele deve redefinir todas as atualizações para seu estado inicial.
Link de referência: Primeiras migrações de código - Migrando para uma versão específica (incluindo downgrade)
fonte
Para corrigir isso, você precisa:
Exclua todos os arquivos * .cs na pasta Migrações.
Excluir a tabela _MigrationHistory no banco de dados
Corre
Enable-Migrations -EnableAutomaticMigrations -Force
Corre
Add-Migration Reset
Em seguida, na
public partial class Reset : DbMigration
classe, você precisa comentar todas as tabelas existentes e atuais:Se você perder esse pedaço, tudo falhará e você terá que começar de novo!
Update-Database -verbose
Isso deve ser bem-sucedido se você tiver feito o procedimento acima corretamente, e agora poderá continuar normalmente.
fonte
Considerando que isso ainda aparece quando pesquisamos o EF no .NET Core, postarei minha resposta aqui (já que isso me assombrou muito). Observe que existem algumas sutilezas com a versão do EF 6 .NET (sem comando inicial e você precisará excluir os arquivos "Snapshot")
(Testado no .NET Core 2.1)
Aqui estão os passos:
_efmigrationhistory
tabela.ApplicationDbContextSnapshot.cs
, e exclua- os.Add-Migration InitialMigration
Observação: você deve excluir TODOS os arquivos de instantâneo . Passei inúmeras horas apenas excluindo o banco de dados ... Isso gerará uma migração vazia se você não fizer isso.
Além disso, na terceira posição, você pode nomear sua migração da maneira que desejar.
Aqui estão alguns recursos adicionais: Migrações principais do asp.net CORE geradas em branco
Redefinir migrações do Entity Framework 7
fonte
No EntityFramework 6, tente:
para atualizar o arquivo de migração inicial.
fonte
No Entity Framework Core.
fonte
Meu problema acabou sendo a remoção manual da pasta Migrações. Fiz isso porque queria fazer backup do conteúdo, então simplesmente arrastei a pasta para fora do projeto. Mais tarde, corrigi o problema colocando-o novamente (depois de fazer uma cópia de backup) e removendo a pasta Migrations clicando com o botão direito do mouse no Solutions Explorer e escolhendo Excluir no menu pop-up.
fonte
No EF6
Add-Migration Initial
.fonte
Exclua a
Migrations
pastaClean
eRebuild
o projeto. Isso funcionou para mim. Antes de Limpar e Reconstruir, estava dizendo que a Migração já existe, pois na memória em cache, ela ainda não foi excluída.fonte
Esse método não requer exclusão da
__MigrationHistory
tabela; portanto, você não precisa colocar as mãos no banco de dados ao implantar.Add-Migration ResetMigrations
Up()
método:fonte
No Net Core 3.0:
Não consegui encontrar uma maneira de redefinir as migrações .
Também tive problemas com migrações interrompidas e as respostas fornecidas aqui não funcionaram para mim. Eu tenho uma API da web .Net Core 3.0 e, em algum lugar no mês passado, editei o banco de dados diretamente. Sim, eu fiz uma coisa ruim, ruim.
As estratégias sugeridas aqui resultaram em vários erros no Package Manager Console:
É verdade que posso ter perdido uma etapa ou ter apagado os arquivos corretos, mas descobri que há maneiras de limpar isso sem tanta força bruta:
Agora, quando a API da web é iniciada com um banco de dados vazio, ela cria corretamente todas as tabelas e propriedades para corresponder aos modelos de entidade.
HTH!
fonte
ATUALIZAÇÃO 2020
ApplicationDbContext => Seu contexto.
fonte
fonte