wake-up-neo.com

So deaktivieren Sie eine Migration in ASP.NET Core mit EF Core

Wenn ich PM> Remove-Migration -context BloggingContext in VS2015 mit einem ASP.NET Core-Projekt unter Verwendung von EF Core wird der folgende Fehler angezeigt:

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.

Wie kann ich es auflösen? Ich verwende die neueste Version von ASP.NET Core 1.0, EF Core und VS2015 Update 3.

129
nam

Verwenden:

CLI

> dotnet ef database update <previous-migration-name>

Package Manager Console

PM> Update-Database <previous-migration-name>

Beispiel:

PM> Update-Database MyInitialMigration

Versuchen Sie dann, die letzte Migration zu entfernen.

Das Entfernen der Migration ohne Datenbankaktualisierung funktioniert nicht, da Sie Änderungen an der Datenbank vorgenommen haben.

Wenn Sie PMC verwenden, versuchen Sie Folgendes: PM> Datenbank aktualisieren 0 Dadurch wird die Datenbank gelöscht, und Sie können den Migrations-Snapshot von Ihrer Lösung entfernen

147
adem caglin

Gehen Sie wie folgt vor, um alle Migrationen vollständig zu entfernen und von vorne zu beginnen:

dotnet ef database update 0
dotnet ef migrations remove
98
Ronald Ramos

Sie können weiterhin den Befehl Update-Database Verwenden.

Update-Database -Migration <migration name> -Context <context name>

Gemessen am Namen Ihrer Migration gehe ich jedoch davon aus, dass es die erste Migration ist, sodass der Befehl möglicherweise nicht funktioniert. Sie sollten in der Lage sein, den Eintrag aus der Tabelle __MigrationHistory In Ihrer Datenbank zu löschen und dann den Befehl Remove-Migration Erneut auszuführen. Sie können die Migrationsdatei auch löschen und einfach neu starten.

48
Brad

Um die zuletzt angewendete Migration wiederherzustellen, müssen Sie folgende Schritte ausführen (Konsolenbefehle von Package Manager):

  1. Migration von Datenbank zurücksetzen: PM> Update-Database <prior-migration-name>
  2. Entfernen Sie die Migrationsdatei aus dem Projekt (oder sie wird im nächsten Schritt erneut angewendet).
  3. Modellschnappschuss aktualisieren: PM> Remove-Migration

UPD : Der zweite Schritt scheint in den neuesten Versionen von Visual Studio (2017) nicht erforderlich zu sein.

24

Sie können eine Migration einfach nach Wert ausrichten

 Update-Database -Migration:0

Dann fahren Sie fort und entfernen Sie es

 Remove-Migration
21
John Nyingi

m eine bestimmte (n) Migration (en) zu deaktivieren:

dotnet ef database update <previous-migration-name>
or
PM> Update-Database -Migration <previous-migration-name>

m alle Migrationen zu deaktivieren:

dotnet ef database update 0
or
PM> Update-Database -Migration 0

m die letzte Migration zu entfernen:

dotnet ef migrations remove
or
PM> Remove-Migration

So entfernen Sie die letzte Migration:

dotnet ef migrations remove --force
or
PM> Remove-Migration -Force
14
AlbertK

So wenden Sie die letzte (aktuelle?) Migration an, nachdem sie bereits auf die Datenbank angewendet wurde:

  1. Öffnen Sie den SQL Server-Objekt-Explorer (Ansicht -> "SQL Server-Objekt-Explorer")
  2. Navigieren Sie zu der Datenbank, die mit Ihrem Projekt verknüpft ist, indem Sie die kleinen Dreiecke an der Seite erweitern.
  3. Erweitern Sie "Tabellen"
  4. Suchen Sie die Tabelle mit dem Namen "dbo._EFMigrationsHistory".
  5. Klicken Sie mit der rechten Maustaste darauf und wählen Sie "Daten anzeigen", um die Tabelleneinträge in Visual Studio anzuzeigen.
  6. Löschen Sie die Zeile für Ihre Migration, die Sie nicht mehr anwenden möchten (sagen Sie "Ja" zu der Warnung, wenn Sie dazu aufgefordert werden).
  7. Führen Sie im Befehlsfenster des Verzeichnisses mit der Datei project.json erneut "dotnet ef migrations remove" aus. Alternativ können Sie den Befehl "Remove-Migration" in der Package Manager-Konsole ausführen.

Hoffe, dies hilft und ist auf jede Migration im Projekt anwendbar ... Ich habe dies nur für die letzte Migration getestet ...

Viel Spaß beim Codieren!

14
Raj

In der Package Manager-Konsole:

Update-Database Your_Migration_You_Want_To_Revert_To

Weitere Optionen und Erklärungen zum Zurücksetzen von Migrationen finden Sie hier

8
Drewskis

Wenn Sie die Package Manager-Konsole verwenden, können Sie eine bestimmte Migration in der Regel entfernen, indem Sie auf den Namen der Migration verweisen

Update-Database -Migration {Name of Migration} -Context {context}

Eine andere Möglichkeit, die letzte Migration zu entfernen, die Sie gemäß docs angewendet haben, besteht darin, den folgenden Befehl zu verwenden:

dotnet ef migrations remove

Dieser Befehl sollte über den Entwicklerbefehl Eingabeaufforderung ( zum Öffnen des Befehls Eingabeaufforderung ) in Ihrem Lösungsverzeichnis ausgeführt werden.

Zum Beispiel, wenn sich Ihre Anwendung im Namen "Application" befindet und sich im Ordner "c:\Projects" befindet. Dann sollte Ihr Weg sein:

C:\Projects\Application
7

Sie sollten die Migration "20160703192724_MyFirstMigration" aus der Tabelle "_EFMigrationsHistory" löschen.

Andernfalls werden mit diesem Befehl die Migration entfernt und der Migrationsordner gelöscht:

   > remove-migration -force
6
AminGolmahalle

Verwenden Sie den folgenden Befehl, um eine Migration in EF Core 1.0 zu deaktivieren:

dotnet ef database update {migrationsname}

Verwenden Sie den Migrationsnamen der Migration, bis zu der Sie Ihre Änderungen beibehalten möchten. Die Liste der Namen der Migration finden Sie unter:

dotnet ef Migrationsliste

2
Rufus Lobo
var context = serviceProvider.GetRequiredService<ApplicationDbContext>();
var userManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
var roleManaget = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();

await context.Database.EnsureDeletedAsync();
0
Kishor Gujar