Estou adicionando uma nova migração, mas esta mensagem mostra:
Não é possível gerar uma migração explícita porque as seguintes migrações explícitas estão pendentes: [201203170856167_left]. Aplique as migrações explícitas pendentes antes de tentar gerar uma nova migração explícita.
Alguém pode me ajudar?
entity-framework
ef-migrations
Noman Saeed
fonte
fonte
Respostas:
Ele informa que há alguma migração não processada em seu aplicativo e que é necessário executar
Update-Database
antes de adicionar outra migração.fonte
-StartupProject ContentHub.Database
Update-Database
dá> Incapaz de atualizar o banco de dados para corresponder ao modelo atual porque há alterações pendentesEu tive o mesmo problema. Aparentemente, a estrutura de entidade gera este erro quando não consegue se conectar ao banco de dados. Portanto, certifique-se de que você pode acessá-lo antes de procurar outros problemas.
fonte
Você precisa executar "update-database" no console do gerenciador de pacotes para enviar suas alterações para o banco de dados OU você pode excluir o arquivo de migração pendente ([201203170856167_left]) de sua pasta Migrations e, em seguida, executar novamente "add-migration" para crie uma nova migração baseada em suas edições.
fonte
Este erro também pode significar que as migrações não são mais reconhecidas. Isso aconteceu comigo depois de ter alterado o valor de ContextKey em Migrations.Configuration. A solução foi simplesmente atualizar o ContextKey na tabela do banco de dados "__MigrationHistory" (ou reverter o valor na classe Configuration, eu acho). O ContextKey e o namespace em seu aplicativo devem corresponder.
fonte
1. String de conexão / Permissões de conexão
Verifique a string de conexão novamente.
Certifique-se de que o usuário com o qual você está se conectando ainda tenha permissão para ler
[__MigrationHistory]
e editar o esquema.Você também pode tentar alterar a string de conexão no arquivo de configuração do aplicativo ou da Web para usar a segurança integrada (Windows Auth) para executar o comando add-migration como você mesmo .
Por exemplo:
Essa string de conexão iria para o arquivo App.config do projeto onde o DbContext está localizado.
2. Projeto de inicialização
Você pode especificar o projeto de inicialização na linha de comando ou você pode botão direito do mouse o projeto com o
DbContext
,Configuration
e Migrações pasta e selecione Definir como projeto de inicialização . Estou falando sério, isso pode realmente ajudar.fonte
Integrated Security
correção funciona muito bem!Tive o mesmo problema e foi capaz de resolver com algumas dicas das respostas acima:
Use "update-database -verbose" no console do gerenciador de pacotes para obter informações mais específicas onde as migrações tentam se conectar. (Ajudou no meu caso a descobrir que meu projeto de inicialização não estava configurado corretamente ...)
fonte
Se você ainda não usou,
Update-Database
pode simplesmente excluí-lo. Se você executou a atualização, reverta usando eUpdate-Database -TargetMigration "NameOfPreviousMigration"
, em seguida, exclua-a.Referência: http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/
Copiei este texto diretamente daqui: Como faço para desfazer o último comando Add-Migration?
fonte
Ao se deparar com esse problema, tente adicionar parâmetros ao cmdlet add-migration. Por exemplo, especificar o projeto de inicialização e também o nome da string de conexão pode ajudar o EF a encontrar seu banco de dados de destino.
Onde:
Delta_Defect_0973 é o nome de sua migração
your.namespace.ContextClassName é o nome da sua classe de configuração na pasta de migração, prefixado com o espaço de nome completo.
DeltaProject é o nome do seu projeto principal com o arquivo web.config ou app.config.
DeltaSQL é o nome da string de conexão definida no arquivo web.config ou app.config.
fonte
Esse erro significa que há migrações pendentes que precisam ser confirmadas antes de executar outra migração explícita. Você pode escolher
Depois disso, você pode iniciar "Adicionar-Migração ..." novamente
Espero que ajude
fonte
Apenas meus dois centavos:
Meu cenário:
Solução:
Para contornar isso, apenas forneci parâmetros mais explícitos:
Acredito que você pode definir uma configuração na pasta app.config para permitir que esse comportamento seja padronizado, de forma que não seja necessário fornecer parâmetros explícitos sempre. No entanto, não tenho certeza de como fazer isso.
fonte
-ConnectionStringName
é uma alternativa a isso, e puxará a string de conexão de sua configuração por nomeExiste uma ambigüidade e, portanto, um erro. A melhor maneira é excluir o arquivo de migração atual e criar um novo arquivo de migração ( adicionar migração ) e, em seguida, copiar o conteúdo da nova migração para o arquivo excluído e incluí-lo novamente e executar o comando update-database .
fonte
update-database
comando, tentei novamenteadd-migration
e funcionoueu resolvi o mesmo problema assim:
fonte
Tive os mesmos problemas e só consegui resolvê-los executando Add-Migration 'MigrationName' -Force
Com -Force sendo a parte importante.
fonte
Meu banco de dados local não tinha o
__MigrationHistory
populado ou existente. Eu criei manualmente a tabela e, em seguida, migrei os dados dessa tabela do PROD para meu banco de dados local. Isso fez com que o VS pensasse que as migrações haviam sido aplicadas (o que aconteceu).fonte
Dica: é sempre bom usar a
-Script
opção para comandos de migração se você não tiver certeza. Também ajuda muito a entender o queUpdate-Database
realmente faz.Eu executo o seguinte para atualizar o banco de dados e, em seguida, obtenho um script que posso aplicar manualmente (ou apenas executá-lo novamente sem a tag -Script).
Pois
Update-Database
eu executaria o seguinte:Update-Database -Script -ConfigurationTypeName Configuration_ASPNETIdentity -ConnectionStringName SQL_AzureLive
Onde
SQL_AzureLive
está a string de conexão nomeada em minha configuração.Então posso verificar se o SQL está certo, aplicá-lo e pronto. Como muitos outros disseram, se a string de conexão estiver errada ou inválida, você receberá este erro.
fonte
Para mim, excluí o arquivo de migração (no seu caso, "201203170856167_left") da
Migrations
pasta e, em seguida, executei o comando abaixo no console do gerenciador de pacotesfonte
Cenário
Problema
Depois de atualizar a partir do mestre, executo "Add-Migration my_migration_name", mas recebo o seguinte erro:
Então, eu executo "Update-Database" e recebo o seguinte erro:
Solução
Neste ponto, executar novamente "Add-Migration my_migration_name" resolveu meu problema. Minha teoria é que executar "Update-Database" conseguiu tudo no estado necessário para que "Add-Migration" funcionasse.
fonte
Eu também me deparei com esse problema. Ele veio quando criei um novo banco de dados e tinha alterações pendentes para minha migração de banco de dados com código inicial, então tentei executar o comando "Atualizar banco de dados". Solução: Execute o comando "Add-Migration -MigrationName" para criar uma nova migração para o novo banco de dados. Em seguida, execute o comando "Update-Database".
fonte
Eu tive esse problema também para um banco de dados que eu sabia que estava atualizado ao executar o Add-Migration. Resolvido simplesmente executando o comando Add-Migration uma segunda vez. Suspeite de um problema de conectividade, conforme sugerido por Robin Dorbell acima.
fonte
Isso aconteceu quando de repente renomeei a classe de migração antiga que já existe no banco de dados. Eu verifiquei o histórico do VCS, determinei isso e renomeei. Tudo funcionou depois.
fonte
Eu fiz de outra maneira. Eu eliminei o banco de dados completamente e executei "update-database" novamente no vs.
fonte
Eu tive um problema mais simples. O VS relatou erroneamente esse erro quando eu tinha uma conexão VPN com o site de um cliente conectado na minha estação de trabalho. O problema era que a segurança do DBMS estava configurada para aceitar solicitações apenas do meu IP local real. Simplesmente desligar a VPN resolveu o problema.
fonte
No meu caso, esqueci de adicionar meu endereço IP nas regras de firewall no Azure, basicamente porque não conseguia me conectar ao banco de dados, recebi esse erro. Então, especificamente para o meu caso, adicionei meu endereço IP nas regras de firewall do banco de dados no Azure e tudo funcionou bem. Além disso, pode ser o problema de proxy / conexão com a Internet / senha do nome de usuário do banco de dados / string de conexão do banco de dados, etc. OU, obviamente, você pode ter migrações pendentes para as quais você precisa executar o comando Update-Database.
fonte
Historicamente, sempre resolvi isso excluindo as migrações pendentes ou, se houvesse apenas 1 restante e fosse mais desejável, usando
-f
para recriá-lo.Recentemente, isso parou de funcionar para mim.
Quando isso aconteceu pela primeira vez, reiniciei o Visual Studio e ele me permitiu continuar.
Na segunda vez, só funcionou depois que executei um Clean no projeto. Era quase como se as migrações pendentes fossem retidas, apesar de excluir todos os arquivos do explorer.
fonte
Essa não será a resposta para muitas pessoas, mas EF irá eliminar esse erro quando não puder se conectar ao banco de dados. Se você está trabalhando em casa como eu, certifique-se de que ainda está conectado à VPN!
fonte
Sofri exatamente o mesmo problema logo após a reversão de uma migração para outra.
No meu caso, eu "direcionei a migração" de "migration06" para "migration04".
Eu precisei deletar o "migration0" 6 e então fui capaz de forçar a criação do "migration05". Isso basicamente significa que você precisa apenas manter a próxima migração após a migração de destino.
fonte
No meu caso (usando o MS Visual Studio), foi tão simples quanto reiniciar o Visual Studio.
fonte