Lorsque PM> Remove-Migration -context BloggingContext
j'exécute dans VS2015 avec un projet ASP.NET Core à l'aide d'EF Core, j'obtiens l'erreur suivante:
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.
Comment puis-je le désappliquer? J'utilise la dernière version d'ASP.NET Core 1.0, EF Core et VS2015 Update 3.
-force
à la finRéponses:
Utilisation:
CLI
> dotnet ef database update <previous-migration-name>
Console du gestionnaire de packages
PM> Update-Database <previous-migration-name>
Exemple:
PM> Update-Database MyInitialMigration
Essayez ensuite de supprimer la dernière migration.
La suppression de la migration sans mise à jour de la base de données ne fonctionne pas car vous avez appliqué des modifications à la base de données.
Si vous utilisez PMC, essayez: PM> update-database 0 Cela effacera la base de données et vous permettra de supprimer l'instantané de migration sur votre solution
la source
dotnet ef database update MyFirstMigration --context BloggingContext
cela a fonctionné avec succès. Ensuite, j'ai courudotnet ef migrations remove --context BloggingContext
qui m'a donné le même message d'erreur que dans mon messageMyFirstMigration
. S'il s'agit de la première migration (comme son nom l'indique), vous pouvez utiliserdotnet ef database update 0
pour annuler (annuler l'application) toutes les migrations de la base de données. Vous devriez alors pouvoir courirdotnet ef migrations remove
.dotnet ef migrations remove
après çaPour supprimer complètement toutes les migrations et recommencer, procédez comme suit:
la source
dotnet ef database update 0
, mais l'exécutiondotnet ef migrations remove
ultérieure supprimera la migration par défaut pour Identity, ce qui pourrait ne pas être souhaité.dotnet ef database update 0
! Je n'avais vu cela mentionné nulle part ...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.
Vous pouvez toujours utiliser la
Update-Database
commande.Cependant, à en juger par le nom de votre migration, je suppose que c'est la première migration, de sorte que la commande peut ne pas fonctionner. Vous devriez pouvoir supprimer l'entrée de la
__MigrationHistory
table de votre base de données, puis réexécuter laRemove-Migration
commande. Vous pouvez également supprimer le fichier de migration et recommencer.la source
Update-Database
partir de la console de gestion de package ou àdotnet ef database update
partir de l'invite de commande depuis le répertoire du projet.<migration name>
devrait être le nom de la migration vers laquelle vous voulez revenir (c'est- à -dire probablement la migration avant celle que vous avez ratée), pas le nom de la migration que vous voulez annuler.Pour annuler une ou plusieurs migrations spécifiques :
Pour annuler toutes les migrations :
Pour supprimer la dernière migration:
Pour supprimer toutes les migrations:
supprimez simplement le
Migrations
dossier.Pour supprimer les dernières migrations (pas toutes):
Il n'y a pas de commande pour supprimer un tas de migrations et nous ne pouvons pas simplement supprimer ces quelques
migrations
- unes et leurs*.designer.cs
fichiers car nous devons conserver le fichier de capture instantanée dans un état cohérent. Nous devons supprimer les migrations une par une (voirTo remove last migration
ci - dessus).Pour annuler l'application et supprimer la dernière migration:
la source
unapply
partout dans ces messages. Cela m'a frappé, ce n'est pas un terme technique, c'est le motun - apply
Pour annuler la dernière migration appliquée, vous devez (commandes de la console du gestionnaire de packages):
PM> Update-Database <prior-migration-name>
PM> Remove-Migration
UPD : la deuxième étape ne semble pas nécessaire dans les dernières versions de Visual Studio (2017).
la source
Remove-Migration
sans problème. Je ne suis pas sûr de ce que vous avez dit "il sera de nouveau appliqué à l'étape suivante"!dbContext.Database.Migrate()
votre startup.csVous pouvez simplement cibler une migration par valeur
Alors allez-y et supprimez-le
la source
Pour "annuler" la migration la plus (récente?) Après qu'elle a déjà été appliquée à la base de données:
J'espère que cela aide et est applicable à toute migration dans le projet ... J'ai testé cela uniquement pour la migration la plus récente ...
Bon codage!
la source
Dans la console du gestionnaire de package:
Update-Database Your_Migration_You_Want_To_Revert_To
Plus d'options et d'explications sur la façon d'annuler les migrations peuvent être vues ici
la source
Vous devez supprimer l' enregistrement de migration '20160703192724_MyFirstMigration' de la table '_EFMigrationsHistory' .
sinon, cette commande supprimera la migration et supprimera le dossier des migrations:
la source
En général, si vous utilisez la console du gestionnaire de packages, la bonne façon de supprimer une migration spécifique consiste à référencer le nom de la migration
Une autre façon de supprimer la dernière migration que vous avez appliquée selon la documentation consiste à utiliser la commande:
Cette commande doit être exécutée à partir de l'invite de commande du développeur ( comment ouvrir l'invite de commande ) dans votre répertoire de solution.
Par exemple, si votre application est à l'intérieur du nom "Application" et se trouve dans le dossier c: \ Projects. Alors votre chemin devrait être:
la source
Afin d'annuler une migration dans EF Core 1.0, utilisez la commande:
mise à jour de la base de données dotnet ef {migration_name}
Utilisez le nom de migration de la migration jusqu'à laquelle vous souhaitez conserver vos modifications. La liste des noms de la migration peut être trouvée en utilisant:
liste des migrations dotnet ef
la source
Pour annuler toutes les migrations appliquées à DB, exécutez simplement:
Il doit être suivi de l'exécution
Remove-Migration
autant de fois qu'il y a de fichiers de migration visibles dans le répertoire de migration. La commande supprime la dernière migration et met également à jour l'instantané.la source
dans un premier temps, exécutez la commande suivante:
puis exécutez celui-ci:
terminer
la source
la source
1. recherchez la table "dbo._EFMigrationsHistory", puis supprimez l'enregistrement de migration que vous souhaitez supprimer. 2. exécutez "remove-migration" dans PM (Package Manager Console). Travaille pour moi.
la source