J'ajoute une nouvelle migration mais ce message montre:
Impossible de générer une migration explicite car les migrations explicites suivantes sont en attente: [201203170856167_left]. Appliquez les migrations explicites en attente avant de tenter de générer une nouvelle migration explicite.
Quelqu'un peut-il m'aider?
entity-framework
ef-migrations
Noman Saeed
la source
la source
Réponses:
Il vous indique qu'il existe une migration non traitée dans votre application et qu'elle doit être exécutée
Update-Database
avant que vous puissiez ajouter une autre migration.la source
-StartupProject ContentHub.Database
Update-Database
donne> Impossible de mettre à jour la base de données pour qu'elle corresponde au modèle actuel car des modifications sont en attenteJ'ai eu le même problème. Apparemment, le cadre d'entité génère cette erreur lorsqu'il ne peut pas se connecter à la base de données. Assurez-vous donc de pouvoir y accéder avant de rechercher d'autres problèmes.
la source
Vous devez soit exécuter «update-database» à partir de la console du gestionnaire de packages pour transférer vos modifications dans la base de données, soit supprimer le fichier de migration en attente ([201203170856167_left]) de votre dossier Migrations, puis relancer «add-migration» vers créez une toute nouvelle migration basée sur vos modifications.
la source
Cette erreur peut également signifier que les migrations ne sont plus reconnues. Cela m'est arrivé après avoir modifié la valeur de ContextKey dans Migrations.Configuration. La solution était simplement de mettre à jour la ContextKey dans la table de base de données "__MigrationHistory" (ou de rétablir la valeur dans la classe de configuration je suppose). La ContextKey et le Namespace de votre application doivent correspondre.
la source
1. Chaîne de connexion / autorisations de connexion
Vérifiez à nouveau la chaîne de connexion.
Assurez-vous que l'utilisateur avec lequel vous vous connectez est toujours autorisé à lire
[__MigrationHistory]
et à modifier le schéma.Vous pouvez également essayer de modifier la chaîne de connexion dans le fichier de configuration d'application ou Web pour utiliser Integrated Security (Windows Auth) pour exécuter la commande add-migration comme vous-même .
Par exemple:
Cette chaîne de connexion irait dans le fichier App.config du projet où se trouve le DbContext.
2. Projet de démarrage
Vous pouvez spécifier le projet de démarrage sur la ligne de commande ou vous pouvez cliquer avec le bouton droit sur le projet avec le dossier
DbContext
,Configuration
et Migrations et sélectionner Définir comme projet de démarrage . Je suis sérieux, cela peut vraiment aider.la source
Integrated Security
correctif fonctionne très bien!J'ai eu le même problème et a pu le résoudre avec quelques indices des réponses ci-dessus:
Utilisez "update-database -verbose" dans la console du gestionnaire de packages pour obtenir des informations plus spécifiques sur les sites auxquels les migrations tentent de se connecter. (J'ai aidé dans mon cas à découvrir que mon projet de démarrage n'était pas défini correctement ...)
la source
Si vous ne l'avez pas utilisé,
Update-Database
vous pouvez simplement le supprimer. Si vous avez exécuté la mise à jourUpdate-Database -TargetMigration "NameOfPreviousMigration"
, annulez-la en utilisant , puis supprimez-la.Référence: http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/
J'ai copié ce texte directement à partir d'ici: Comment annuler la dernière commande Add-Migration?
la source
Lorsque vous rencontrez ce problème, essayez d'ajouter des paramètres à votre applet de commande add-migration. Par exemple, la spécification du projet de démarrage ainsi que le nom de la chaîne de connexion peut aider EF à trouver votre base de données cible.
Où:
Delta_Defect_0973 est le nom de votre migration
your.namespace.ContextClassName est le nom de votre classe de configuration dans votre dossier de migration, précédé de l'espace de nom complet.
DeltaProject est le nom de votre projet principal avec votre fichier web.config ou app.config.
DeltaSQL est le nom de votre chaîne de connexion définie dans votre fichier web.config ou app.config.
la source
Cette erreur signifie que des migrations en attente doivent être validées avant de pouvoir exécuter une autre migration explicite. Vous pouvez choisir de
Après celui-ci, vous pouvez recommencer "Add-Migration ..."
J'espère que ça aide
la source
Juste mes deux cents:
Mon scénario:
Solution:
Pour contourner ce problème, je viens de fournir des paramètres plus explicites:
Je suis amené à croire que vous pouvez définir un paramètre dans votre dossier app.config pour vous permettre de définir ce comportement par défaut afin que vous n'ayez pas à fournir des paramètres explicites à chaque fois. Cependant, je ne sais pas comment procéder.
la source
-ConnectionStringName
est une alternative à cela, et tirera la chaîne de connexion de votre configuration par nomIl y a une ambiguïté et donc une erreur. Le meilleur moyen est d'exclure le fichier de migration actuel et de créer un nouveau fichier de migration ( add-migration ), puis de copier le contenu de la nouvelle migration dans le fichier exclu et de l'inclure à nouveau et d'exécuter la commande update-database .
la source
update-database
commande puis réessayé maadd-migration
commande et cela a fonctionnéJ'ai résolu le même problème comme ceci:
la source
J'ai eu les mêmes problèmes et je n'ai pu le résoudre qu'en exécutant Add-Migration 'MigrationName' -Force
Avec -Force étant la partie importante.
la source
Ma base de données locale ne contenait pas le
__MigrationHistory
fichier. J'ai créé manuellement la table, puis j'ai migré les données de cette table de PROD vers ma base de données locale. Cela a amené VS à penser que les migrations avaient été appliquées (ce qu'elles avaient été).la source
Conseil: il est toujours bon d'utiliser le
-Script
commutateur pour les commandes de migration si vous n'êtes pas sûr. Cela aide aussi vraiment à comprendre ce queUpdate-Database
fait réellement.J'exécute ce qui suit pour mettre à jour la base de données, puis j'obtiens un script que je peux appliquer manuellement (ou simplement le réexécuter sans la balise -Script).
Car
Update-Database
je lancerais ce qui suit:Update-Database -Script -ConfigurationTypeName Configuration_ASPNETIdentity -ConnectionStringName SQL_AzureLive
Où
SQL_AzureLive
est la chaîne de connexion nommée dans ma configuration.Ensuite, je peux vérifier que le SQL semble correct, l'appliquer et faire. Comme beaucoup d'autres l'ont dit, si la chaîne de connexion est incorrecte ou invalide, vous obtiendrez cette erreur.
la source
Pour moi, j'ai supprimé le fichier de migration (dans votre cas "201203170856167_left") du
Migrations
dossier, puis j'ai exécuté la commande ci-dessous dans la console du gestionnaire de packagela source
Scénario
Problème
Après la mise à jour à partir du maître, j'exécute «Add-Migration my_migration_name», mais j'obtiens l'erreur suivante:
Donc, j'exécute "Update-Database" et j'obtiens l'erreur suivante:
Solution
À ce stade, la réexécution de "Add-Migration my_migration_name" a résolu mon problème. Ma théorie est que l'exécution de "Update-Database" a tout dans l'état nécessaire pour que "Add-Migration" fonctionne.
la source
Je suis également tombé sur ce problème. Il est venu lorsque j'ai créé une nouvelle base de données et que j'avais des modifications en attente pour ma migration de base de données code-first, puis j'ai essayé d'exécuter la commande "Update-Database". Solution: exécutez la commande "Add-Migration -MigrationName" pour créer une nouvelle migration pour la nouvelle base de données. Exécutez ensuite la commande "Update-Database".
la source
J'ai également eu ce problème pour une base de données dont je savais qu'elle était à jour lors de l'exécution d'Add-Migration. Résolu en exécutant simplement la commande Add-Migration une deuxième fois. Suspectez un problème de connectivité, comme suggéré par Robin Dorbell ci-dessus.
la source
Cela s'est produit lorsque j'ai soudainement renommé la classe de l'ancienne migration qui existe déjà dans db. J'ai vérifié l'historique du VCS, déterminé cela et renommé. Tout a fonctionné par la suite.
la source
J'ai fait une autre manière. J'ai complètement abandonné la base de données et réexécuté "update-database" dans vs.
la source
J'ai eu un problème plus simple. VS a signalé cette erreur par erreur lorsque j'avais une connexion VPN au site d'un client connecté sur mon poste de travail. Le problème était que la sécurité du SGBD était configurée pour n'accepter que les demandes provenant de ma véritable adresse IP locale. La simple désactivation du VPN a résolu le problème.
la source
Dans mon cas, j'ai oublié d'ajouter mon adresse IP dans les règles de pare-feu dans Azure, car je n'ai pas pu me connecter à la base de données, j'obtenais cette erreur. Donc, spécifiquement pour mon cas, j'ai ajouté mon adresse IP dans les règles de pare-feu de base de données dans Azure et tout a bien fonctionné. En dehors de cela, il pourrait s'agir du problème du proxy / connexion Internet / mot de passe du nom d'utilisateur de la base de données / chaîne de connexion de la base de données, etc. OU évidemment, vous pourriez avoir des migrations en attente pour lesquelles vous devez exécuter la commande Update-Database.
la source
Historiquement, j'ai toujours résolu ce problème en supprimant les migrations en attente, ou s'il n'en restait qu'une seule et c'était surtout souhaitable, en utilisant
-f
pour le recréer.Récemment, cela a cessé de fonctionner pour moi.
Lorsque cela s'est produit la première fois, j'ai redémarré Visual Studio, puis cela m'a permis de continuer.
La deuxième fois, cela n'a fonctionné qu'après avoir exécuté un nettoyage du projet. C'était presque comme si les migrations en attente étaient conservées malgré la suppression de tous les fichiers de l'explorateur.
la source
Cela ne sera pas la réponse pour beaucoup de gens, mais EF rejettera cette erreur lorsqu'il ne pourra pas se connecter à la base de données. Si vous travaillez à domicile comme moi, assurez-vous que vous êtes toujours connecté à votre VPN!
la source
J'ai souffert exactement du même problème juste après être passé d'une migration à une autre.
Dans mon cas, j'ai "ciblé la migration" de "migration06" vers "migration04".
J'avais besoin de supprimer le "migration0" 6 puis j'ai pu forcer la création du "migration05". Cela signifie essentiellement que vous devez simplement conserver la prochaine migration après celle ciblée.
la source
Dans mon cas (en utilisant MS Visual Studio), c'était aussi simple que de redémarrer Visual Studio.
la source