Lorsque j'exécute PM> Remove-Migration -context BloggingContext
dans VS2015 avec un projet ASP.NET Core utilisant EF Core, l'erreur suivante apparaît:
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, d'EF Core et de VS2015 Update 3.
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
Ensuite, essayez 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é les modifications à la base de données.
Si vous utilisez PMC, essayez: PM> update-database 0 Ceci effacera la base de données et vous permettra de supprimer l'instantané de migration de votre solution.
Pour supprimer complètement toutes les migrations et tout recommencer, procédez comme suit:
dotnet ef database update 0
dotnet ef migrations remove
Vous pouvez toujours utiliser la commande Update-Database
.
Update-Database -Migration <migration name> -Context <context name>
Cependant, à en juger par le nom de votre migration, je suppose que c'est la première migration, de sorte que cette commande peut ne pas fonctionner. Vous devriez pouvoir supprimer l'entrée de la table __MigrationHistory
de votre base de données, puis exécuter à nouveau la commande Remove-Migration
. Vous pouvez également supprimer le fichier de migration et tout recommencer.
Pour rétablir 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 être nécessaire dans les dernières versions de Visual Studio (2017).
Vous pouvez simplement cibler une migration par valeur
Update-Database -Migration:0
Alors vas-y et enlève-le
Remove-Migration
Pour désappliquer une migration spécifique:
dotnet ef database update <previous-migration-name>
or
PM> Update-Database -Migration <previous-migration-name>
Pour supprimer toutes les migrations:
dotnet ef database update 0
or
PM> Update-Database -Migration 0
Pour supprimer la dernière migration:
dotnet ef migrations remove
or
PM> Remove-Migration
Pour désappliquer et supprimer la dernière migration:
dotnet ef migrations remove --force
or
PM> Remove-Migration -Force
Pour "désappliquer" la migration la plus récente (après?) Après qu'elle a déjà été appliquée à la base de données:
J'espère que cela vous aidera et s'appliquera à toute migration dans le projet ... Je ne l'ai testée que pour la migration la plus récente ...
Bon codage!
Dans la console du gestionnaire de packages:
Update-Database Your_Migration_You_Want_To_Revert_To
Plus d'options et d'explications sur la façon de revenir en arrière peuvent être vues ici
En général, si vous utilisez la console Package Manager, le bon moyen de supprimer une migration spécifique consiste à référencer le nom de la migration.
Update-Database -Migration {Name of Migration} -Context {context}
Une autre façon de supprimer la dernière migration que vous avez appliquée conformément à docs consiste à utiliser la commande:
dotnet ef migrations remove
Cette commande doit être exécutée à partir de la commande de développeur Prompt ( comment ouvrir l'invite de commande ) dans le répertoire de votre solution.
Par exemple, si votre application se trouve à l'intérieur du nom "Application" et se trouve dans le dossier c:\Projects. Ensuite, votre chemin devrait être:
C:\Projects\Application
Vous devez supprimer la table 'Enregistrement de' _EFMigrationsHistory 'de la migration' 20160703192724_MyFirstMigration '.
Sinon, cette commande supprimera le dossier de migration et de suppression:
> remove-migration -force
Pour désappliquer une migration dans EF Core 1.0, utilisez la commande suivante:
mise à jour de la base de données dotnet ef {nom_migration}
Utilisez le nom de la migration de la migration jusqu'à laquelle vous souhaitez conserver vos modifications. La liste des noms de migration peut être trouvée en utilisant:
liste des migrations dotnet ef
var context = serviceProvider.GetRequiredService<ApplicationDbContext>();
var userManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
var roleManaget = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
await context.Database.EnsureDeletedAsync();