Wenn ich PM> Remove-Migration -context BloggingContext
in VS2015 mit einem ASP.NET Core-Projekt unter Verwendung von EF Core ausgeführt werde, wird die folgende Fehlermeldung 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 nicht anwenden? Ich verwende die neueste Version von ASP.NET Core 1.0, EF Core und VS2015 Update 3.
-force
am Ende hinzuzufügenAntworten:
Verwenden:
CLI
> dotnet ef database update <previous-migration-name>
Package Manager-Konsole
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: PM> update-database 0 Dadurch wird die Datenbank gelöscht und Sie können den Migrations-Snapshot auf Ihrer Lösung entfernen
quelle
dotnet ef database update MyFirstMigration --context BloggingContext
erfolgreich genutzt. Dann lief ichdotnet ef migrations remove --context BloggingContext
das gab mir die gleiche Fehlermeldung wie in meinem BeitragMyFirstMigration
. Wenn dies die erste Migration ist (wie der Name schon sagt), können Siedotnet ef database update 0
alle Migrationen aus der Datenbank zurücksetzen (nicht anwenden). Sie sollten dann laufen könnendotnet ef migrations remove
.dotnet ef migrations remove
danach anGehen Sie wie folgt vor, um alle Migrationen vollständig zu entfernen und von vorne zu beginnen:
quelle
dotnet ef database update 0
, aber wenn Siedotnet ef migrations remove
danach ausgeführt werden, wird die Standardmigration für Identität entfernt, die möglicherweise nicht erwünscht ist.dotnet ef database update 0
! Ich hatte dies nirgends erwähnt gesehen ...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.
Sie können den
Update-Database
Befehl weiterhin verwenden .Nach dem Namen Ihrer Migration zu urteilen, gehe ich jedoch davon aus, dass es sich um die erste Migration handelt, sodass der Befehl möglicherweise nicht funktioniert. Sie sollten in der Lage sein, den Eintrag aus der
__MigrationHistory
Tabelle in Ihrer Datenbank zu löschen und denRemove-Migration
Befehl dann erneut auszuführen . Sie können die Migrationsdatei auch löschen und einfach erneut starten.quelle
Update-Database
Paketverwaltungskonsole oderdotnet ef database update
über die Eingabeaufforderung aus dem Projektverzeichnis aufrufen .<migration name>
sollte der Name der Migration sein , Sie wollen zurück zu gehen (dh wahrscheinlich die Migration vor die, die Sie oben geschraubt), nicht der Name der Migration Sie rückgängig machen möchten.So wenden Sie eine bestimmte Migration (en) nicht an :
So wenden Sie alle Migrationen an :
So entfernen Sie die letzte Migration:
So entfernen Sie alle Migrationen:
Migrations
Ordner einfach entfernen .So entfernen Sie die letzten Migrationen (nicht alle):
Es gibt keinen Befehl zum Entfernen einer Reihe von Migrationen, und wir können diese wenigen
migrations
und ihre*.designer.cs
Dateien nicht einfach entfernen, da wir die Snapshot-Datei im konsistenten Zustand halten müssen. Wir müssen Migrationen einzeln entfernen (sieheTo remove last migration
oben).So entfernen Sie die letzte Migration und entfernen sie:
quelle
unapply
immer wieder in diesen Posts. Es hat mich nur getroffen, es ist kein Fachbegriff, es ist das Wortun - apply
Um die zuletzt angewendete Migration zurückzusetzen, sollten Sie (Paketmanager-Konsolenbefehle):
PM> Update-Database <prior-migration-name>
PM> Remove-Migration
UPD : Der zweite Schritt scheint in den neuesten Versionen von Visual Studio (2017) nicht erforderlich zu sein.
quelle
Remove-Migration
ohne Probleme automatisch gelöscht . Ich bin mir nicht sicher, was Sie gesagt haben "es wird im nächsten Schritt erneut angewendet"!dbContext.Database.Migrate()
Ihre startup.csSie können eine Migration einfach nach Wert ausrichten
Dann fahren Sie fort und entfernen Sie es
quelle
So "entfernen" Sie die letzte (letzte?) Migration, nachdem sie bereits auf die Datenbank angewendet wurde:
Ich hoffe, dies hilft und gilt für jede Migration im Projekt ... Ich habe dies nur für die letzte Migration getestet ...
Viel Spaß beim Codieren!
quelle
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
quelle
Sie sollten den Migrationsdatensatz '20160703192724_MyFirstMigration' aus der Tabelle '_EFMigrationsHistory' löschen .
Andernfalls entfernt dieser Befehl die Migration und löscht den Migrationsordner:
quelle
Wenn Sie die Package Manager-Konsole verwenden, können Sie eine bestimmte Migration im Allgemeinen richtig entfernen, indem Sie auf den Namen der Migration verweisen
Eine andere Möglichkeit, die letzte Migration zu entfernen, die Sie gemäß den Dokumenten angewendet haben, ist die Verwendung des folgenden Befehls:
Dieser Befehl sollte an der Entwickler-Eingabeaufforderung ( Öffnen der Eingabeaufforderung ) in Ihrem Lösungsverzeichnis ausgeführt werden.
Zum Beispiel, wenn sich Ihre Anwendung im Namen "Anwendung" befindet und sich im Ordner c: \ Projects befindet. Dann sollte Ihr Weg sein:
quelle
Verwenden Sie den folgenden Befehl, um eine Migration in EF Core 1.0 aufzuheben:
Aktualisierung der dotnet ef-Datenbank {Migrationsname}
Verwenden Sie den Migrationsnamen der Migration, bis zu dem Sie Ihre Änderungen beibehalten möchten. Die Liste der Namen der Migration finden Sie unter:
dotnet ef Migrationsliste
quelle
Um alle Migrationen zurückzusetzen, die auf DB angewendet werden, führen Sie einfach Folgendes aus:
Anschließend sollte so
Remove-Migration
oft ausgeführt werden, wie Migrationsdateien im Migrationsverzeichnis sichtbar sind. Der Befehl löscht die letzte Migration und aktualisiert auch den Snapshot.quelle
Führen Sie zunächst den folgenden Befehl aus:
und dann diesen ausführen:
Fertig
quelle
quelle
1.Finden Sie die Tabelle "dbo._EFMigrationsHistory" und löschen Sie den Migrationsdatensatz, den Sie entfernen möchten. 2. Führen Sie "Remove-Migration" in PM (Package Manager Console) aus. Funktioniert bei mir.
quelle