559 Stimmen

EF-Migrationen: Rollback der zuletzt durchgeführten Migration?

Das sieht nach einer ganz gewöhnlichen Aufgabe aus, aber ich kann keine einfache Lösung dafür finden.

Ich möchte die zuletzt durchgeführte Migration rückgängig machen. Ich hätte einen einfachen Befehl erwartet, wie

PM> Update-Database -TargetMigration:"-1"

Stattdessen ist alles, was mir einfällt:

PM> Get-Migrations

Retrieving migrations that have been applied to the target database.
201208012131302_Add-SystemCategory
201207311827468_CategoryIdIsLong
201207232247409_AutomaticMigration
201207211340509_AutomaticMigration
201207200025294_InitialCreate

PM> Update-Database -TargetMigration:"CategoryIdIsLong"

(Zumindest kann ich nur den Namen verwenden und den Zeitstempel weglassen...)

Gibt es einen einfacheren Weg?

13voto

feli_jane Punkte 121

EF-KERN

PM> Update-Database yourMigrationName

(macht die Migration rückgängig)

PM> Update-Database

hat für mich funktioniert

in diesem Fall die ursprüngliche Frage (yourMigrationName = CategoryIdIsLong)

7voto

mattylantz Punkte 265
update-database 0

Warnung : Dies führt zu einem Rollback ALLE Migrationen in EFCore! Bitte mit Vorsicht verwenden :)

6voto

In EF Core können Sie den Befehl Remove-Migration in der Konsole des Paketmanagers, nachdem Sie Ihre fehlerhafte Migration hinzugefügt haben.

Die Konsole empfiehlt dies, wenn die Migration einen Datenverlust zur Folge haben könnte:

Eine Operation wurde eingerüstet, die dazu führen kann Bitte überprüfen Sie die Migration auf ihre Richtigkeit. Um diese Aktion rückgängig zu machen, verwenden Sie Entfernen-Migration.

5voto

LCarter Punkte 443

Ich lasse meine durch meine (BASH GIT) Konsole läuft auch Entity Framework Kern . Update-Database Befehle funktionieren nicht außerhalb der Paketkonsole und ich muss die donet ef Befehle.

donet ef database update [Name of previous Migration]

Dadurch wird die protected override void Down(MigrationBuilder migrationBuilder) Methode Ihrer aktuellen Migration und alle anderen, um zu der Version der DB zurückzukehren, auf die Sie sie eingestellt haben.

Ich verwende auch die -p [migration project] -s [Project Solution] . Dies ermöglicht auch den Verweis auf meine appsettings.[Umgebung].json wo mein Passwort für den Zugang zur DB gespeichert ist.

export ASPNETCORE_ENVIRONMENT=[ENVIORMENT]; donet ef database update [Name of previous Migration] -p [Migration Project Name] -s [Solution Name]

Vieles davon dürfte bekannt sein, aber ich wollte Details nennen, falls Sie es zum ersten Mal tun.

4voto

Amos Punkte 1821

Zusätzliche Erinnerung:

Wenn Sie mehrere Konfigurationstypen haben, müssen Sie den [Konfigurationsname] angeben.

Update-Database -Configurationtypename [ConfigurationName] -TargetMigration [MigrationName]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X