2016-11-22 5 views
3

Ist es möglich, alle Migrationsdateien in eine zusammenzufassen?Fusionen von Migrationen in Entity-Framework-Core

Ich habe eine erste Migration erstellt.

dotnet ef migrations add InitialMigration 

Source

Wann immer ich eine Modellwechsel haben erstelle ich neue Migration Update.

Aber jetzt habe ich zu viele Migrationsaktualisierungsdateien. Ist es möglich, alle Migrationsdateien zu einer zusammenzufassen?

Off-Kurs-Drop-Datenbank ist keine Option, ich muss Daten erhalten!

+0

macht keinen Sinn, könnte Ihre Datenbank in sein ** ANY ** der Migrationszustände. Dh wenn Sie 6 Migrationen haben und Ihre Datenbank bei Migration 4 ist, aber wenn Sie Merge 3 zu 6 in eine Migrationsdatei zusammenführen, können Sie Ihre Datenbank, die sich auf der 4. Migration befindet, nie aktualisieren – Tseng

+0

Das Beste, was Sie tun könnten ist, dass if Sie haben 15 Migrationen, Rollback auf Migration 2 und erstellen Sie eine neue Migration.Wenn die App jedoch auf mehr als einem Server ausgeführt wird, die sich in einem anderen Status befinden (Sie können nie mehr als die älteste verwendete Migration zurückrollen) – Tseng

Antwort

10

EF 6.X hat eine Option IgnoreChanges. Das ist die perfekte Lösung für Ihr Szenario. Aber leider ist es nicht mit dem EF Kern.

Aber Sie haben einen Workaround.

Schritt 1: Löschen Sie alle Migrationsskripts im Migrationsordner.

Schritt 2: On Paket-Manager-Konsole: Löschen Sie beide Up() und Down() Methoden code.Before, dass diese Methoden Inhalt separat für eine spätere Verwendung halten tun:

PM> Add-Migration InitialCreate 

Schritt 3 ausgeführt werden.

Schritt 4: Lauf:

PM> Update-Database 

Es wird einen neuen Datensatz in __EFMigrationsHistory Tabelle einfügen.

Schritt 5: Danach füllt die oben Migration Skripts (das heißt .._InitialCreate) Up() und Down() Methode von den Inhalten, die Sie auf dem sicheren Ort auf Schritt 3 halten haben.

Das heißt it.Now Sie haben nur 1 Migrationsdatei :)

Hinweis: EF Kern mit Package Manager-Konsole (PM): Package Manager Console

+0

Ich bin nur nicht sicher, ob die Migration in Entity ausgeführt werden kann -framework-core aus der Paketmanagerkonsole. Ich konnte nicht. Ich musste dies von der Eingabeaufforderung aus tun. – Raskolnikov

+0

können Sie.please finden Sie das Dokument hier: https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell – Sampath

+0

Bitte beachten Sie die ** Anmerkung ** auch. – Sampath

0

Eine Möglichkeit ist, alle Migrationsdateien physisch zu entfernen und neue hinzuzufügen. Wenn sich Ihre Migrationen im Ordner "Migrations" befinden, können Sie sie einfach löschen, andernfalls müssen Sie auch Ihre "ModelSnapshot" -Datei löschen. Ich denke, dass dieser Ansatz Ihr Problem lösen kann.

Verwandte Themen