Impossibilité de générer une migration explicite dans le cadre de l'entité

j'ajoute une nouvelle migration mais ce message montre:

incapable de générer une migration explicite parce que: des migrations explicites sont en attente: [201203170856167_left]. Appliquer le en attendant des migrations explicites avant de tenter de générer un nouveau explicite de la migration.

est-ce que quelqu'un peut m'aider?

75
demandé sur socketman 2012-03-22 11:10:20

20 réponses

il vous indique qu'il y a une migration non traitée dans votre application et qu'il faut exécuter Update-Database avant de pouvoir ajouter une autre migration.

64
répondu Ladislav Mrnka 2012-03-22 09:27:10

j'ai eu le même problème. Apparemment, entity framework génère cette erreur quand il est incapable de se connecter à la base de données. Donc, assurez-vous que vous êtes en mesure d'accéder à avant de chercher d'autres problèmes.

37
répondu Robin Dorbell 2015-07-31 09:37:17

soit vous avez besoin d'exécuter" update-database "depuis la console du gestionnaire de paquets pour pousser vos modifications à la base de données, soit vous pouvez supprimer le fichier de migration en attente ([201203170856167_left]) de votre dossier Migrations et ensuite relancer" add-migration " pour créer une toute nouvelle migration basée sur vos modifications.

28
répondu socketman 2014-02-07 03:12:19

cette erreur peut aussi signifier que les migrations ne sont plus reconnues. Cela m'est arrivé après avoir changé la valeur de ContextKey dans Migrations.Configuration. La solution était simplement de mettre à jour la clé de contexte dans la table de base de données "__MigrationHistory" (ou de revenir sur la valeur dans la classe de Configuration je suppose). La clé de contexte et L'espace de noms de votre application doivent correspondre.

19
répondu Thomas 2018-01-08 08:24:38

avait le même problème et a été capable de résoudre avec quelques conseils des réponses ci-dessus:

  • dans la console du gestionnaire de paquets vérifiez le projet par défaut (pointez vers le projet avec la configuration de migration
  • S'assurer que le startup-proj a un web.config avec une connexion valide ( ou
  • S'assurer que le projet avec migrations a une application.config / web.config avec une connexion valide
  • contrôle permissions en DB (pour l'utilisateur configuré dans votre connexion)

utilisez" update-database-verbose " dans la console du gestionnaire de paquets pour obtenir des informations plus spécifiques où migrations essaie de se connecter. (Aidé dans mon cas pour découvrir mon projet de démarrage n'a pas été mis correctement...)

8
répondu flex 2016-09-29 08:19:21

1. Chaîne De Connexion / Permissions De Connexion

vérifiez à nouveau la chaîne de connexion.

assurez-vous que l'utilisateur que vous connectez avec still a la permission de lire à partir de [__MigrationHistory] et a la permission de modifier le schéma.

vous pouvez également essayer de changer la chaîne de connexion dans L'application ou le fichier de configuration Web pour utiliser sécurité intégrée (Windows Auth) pour exécuter la commande add-migration comme vous-même .

par exemple:

connectionString="data source=server;initial catalog=db;persist security info=True;Integrated Security=SSPI;" 

cette chaîne de connexion irait dans l'application.fichier de configuration du projet où se trouve le DbContext.

2. Projet De Création 151950920"

vous pouvez spécifier le projet de démarrage sur la ligne de commande ou vous pouvez faire un clic droit sur le projet avec le dossier DbContext , Configuration et Migrations et sélectionnez défini comme projet de démarrage . Je suis sérieux, cela peut réellement aider.

enter image description here

8
répondu Jess 2018-08-23 12:56:33

si vous n'avez pas utilisé Update-Database , vous pouvez le supprimer. Si vous avez exécuté la mise à jour , faites-la revenir en arrière en utilisant Update-Database -TargetMigration "NameOfPreviousMigration" , puis supprimez-la.

référence: http://elegantcode.com/2012/04/12/entity-framework-migrations-tips /

j'ai copié ce texte directement d'ici: Comment puis-je défaire la dernière commande Add-Migration?

6
répondu nu everest 2017-05-23 11:33:25

dans ce numéro, veuillez essayer d'ajouter des paramètres à votre cmdlet add-migration. Par exemple, spécifier le projet de démarrage ainsi que le nom de la chaîne de connexion pourrait aider EF à trouver votre base de données cible.

add-migration Delta_Defect_0973 -ConfigurationTypeName your.namespace.ContextClassName -StartUpProject DeltaProject -ConnectionStringName DeltaSQL

où:

Delta_Defect_0973 est le nom de votre migration

votre.espace de noms.ContextClassName est le nom de votre Configuration classe dans votre dossier de migration, préfixée avec l'espace de nom complet.

DeltaProject est le nom de votre projet principal avec votre web.config ou app.fichier de configuration.

DeltaSQL est le nom de votre chaîne de connexion définie dans votre web.config ou app.fichier de configuration.

6
répondu Yves Rochon 2016-05-05 19:16:36

cette erreur signifie qu'il y a des migrations pendantes qui doivent être commutées avant que vous puissiez exécuter une autre migration explicite. Vous pouvez choisir de

  1. exécuter les migrations en cours en utilisant la commande Update-Database
  2. supprimer les migrations en cours. La manière la plus sûre est d'ouvrir le dossier Migrations, clic droit sur [201203170856167_left] > exclure du projet

après celle-ci, vous pouvez commencer " Add-Migration ..." à nouveau

j'Espère que ça aide

4
répondu Hung Vu 2016-09-07 04:35:51

Juste mes deux cents:

mon scénario:

  1. j'ai restauré ma base de données locale.
  2. avait déjà des migrations déjà appliquées.
  3. chaque fois que j'ai essayé d'ajouter une nouvelle migration j'ai eu l'erreur au sujet des migrations en attente comme mentionné mon OP.

Solution:

pour contourner cela je juste fourni des paramètres plus explicites:

Add-Migration -ConnectionString "Server=localhost\SQLEXPRESS;Database=YourDataBase;Trusted_Connection=True;" -ConnectionProviderName "System.Data.SqlClient" -verbose

je suis porté à croire que vous pouvez définir un paramètre dans votre application.config folder pour vous permettre d'utiliser ce comportement par défaut de sorte que vous n'ayez pas à fournir des paramètres explicites à chaque fois. Cependant, je ne suis pas sûr de savoir comment faire.

3
répondu IbrarMumtaz 2016-11-17 11:04:04

Il y a une ambiguïté et donc l'erreur. La meilleure façon est d'exclure le fichier de migration actuel et de créer une nouvelle migration( add-migration ) fichier, puis copier le contenu de la nouvelle migration vers le fichier exclu et l'inclure à nouveau et exécuter update-database commande.

2
répondu Sachin Cholkar 2018-03-06 14:29:22

j'ai eu les mêmes problèmes et n'ai pu le résoudre qu'en lançant Add-Migration 'MigrationName' - Force

Avec Force la partie importante.

1
répondu Evan Barke 2016-09-21 08:54:22

ma base de données locale n'avait pas le __MigrationHistory peuplé, ou existant. J'ai créé manuellement la table, puis j'ai migré les données de cette table de PROD à ma base de données locale. Cela a amené VS à penser que les migrations avaient été appliquées (ce qu'elles avaient été).

1
répondu contactmatt 2017-11-14 01:36:35

scénario

  • je travaille dans une branche dans laquelle j'ai créé une nouvelle migration DB.
  • je suis prêt à mettre à jour à partir de master, mais master a une migration DB récente, aussi.
  • j'efface la migration db de ma branche pour éviter les conflits.
  • je "mise à jour du maître".

problème

après mise à jour depuis master, j'exécute "Add-Migration my_migration_name", mais j'obtiens l'erreur suivante:

incapable de générer une migration explicite parce que: les migrations explicites sont en attente: [201607181944091_AddExternalEmailactivity]. Appliquer les dispositions explicites migrations avant de tenter de générer une nouvelle migration explicite.

donc, je lance "Update-Database" et j'obtiens l'erreur suivante:

impossible de mettre à jour la base de données pour correspondre au modèle actuel parce qu'il y a en attente de modifications et la migration automatique est désactivée

Solution

à ce point, relancer" Add-Migration my_migration_name " a résolu mon problème. Ma théorie est que l'exécution de " Update-Database "a obtenu tout ce dont il avait besoin pour que" Add-Migration " fonctionne.

0
répondu Tod Birdsall 2016-07-21 16:22:12

je suis également tombé sur cette question. Il est venu quand j'ai créé de nouveaux DB et j'ai eu des changements en attente pour mon code-D'abord la migration de DB puis j'ai essayé d'exécuter la commande "Update-Database". Solution: lancez la commande "Add-Migration-MigrationName" pour créer une nouvelle migration pour la nouvelle base de données. Puis lancez la commande "Update-Database".

0
répondu Pritam 2016-09-15 06:47:41

j'ai eu ce problème aussi pour une base de données que je savais être à jour lorsque j'ai lancé Add-Migration. Résolu en lançant simplement la commande Add-Migration une seconde fois. Soupçonnez un problème de connectivité, comme suggéré par Robin Dorbell ci-dessus.

0
répondu spadelives 2016-09-23 06:16:59

c'est arrivé quand j'ai soudainement renommé la classe de migration ancienne qui existe déjà en db. J'ai vérifié L'historique du VCS, j'ai déterminé ça et je l'ai renommé. Tous travaillé par la suite.

0
répondu Doctor Coder 2017-06-30 13:14:17

j'ai subi exactement le même problème juste après être revenu d'une migration à une autre.

Dans mon cas, j'ai "targetedmigration" à partir de "migration06" à "migration04".

j'avais besoin de supprimer la"migration0 "6 et puis j'ai pu forcer la création de la"migration05". Cela signifie essentiellement que vous devez simplement garder la prochaine migration après celle ciblée.

0
répondu Gonzo345 2017-11-16 08:16:05

Conseil: il est toujours bon d'utiliser le commutateur -Script pour les commandes de migration si vous n'êtes pas sûr. Il aide aussi vraiment à comprendre ce que Update-Database fait réellement.

j'exécute ce qui suit pour mettre à jour la base de données, puis je reçois un script que je peux appliquer manuellement (ou tout simplement l'exécuter à nouveau sans la balise-Script).

Pour Update-Database je ne l'exécutez la commande suivante :

Update-Database -Script -ConfigurationTypeName Configuration_ASPNETIdentity -ConnectionStringName SQL_AzureLive

SQL_AzureLive est la chaîne de connexion nommée dans ma configuration.

alors je peux vérifier que le SQL semble droit, l'appliquer et être fait. Comme beaucoup d'autres l'ont dit, si la chaîne de connexion est incorrecte ou invalide, vous obtiendrez cette erreur.

0
répondu Simon_Weaver 2018-02-22 22:56:06

j'ai fait un autre chemin. J'ai complètement abandonné la base de données et lancé "update-database" à nouveau dans vs.

0
répondu Ghadir Farzaneh 2018-05-04 18:44:59