Wie mache ich den letzten Befehl Add-Migration rückgängig?


83

Ich habe mit dem Add-MigrationBefehl eine Migration erstellt , möchte aber den Namen dieser Migration ändern. Wie kann ich den Migrationsbefehl rückgängig machen, damit ich ihn unter dem neuen gewünschten Namen neu generieren kann?

Geht es nur darum, die generierten Dateien zu löschen, oder könnte dies eine schlechte Idee sein?

Antworten:


134

Wenn Sie nicht verwendet haben, können Update-DatabaseSie einfach die Migrationsdatei löschen. Wenn Sie das Update ausgeführt haben, sollten Sie es zurücksetzen und Update-Database -TargetMigration "NameOfPreviousMigration"dann die Migrationsdatei löschen.

Referenz:

http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/


Was wäre, wenn die erste Migration hinzugefügt würde?
Jimmyt1988

@ Jimmyt1988, verwenden Sie Update-Database –TargetMigration: $ InitialDatabase
Seraphim

Dann löschen? Ich verstehe es nicht Dann was löschen?
tnk479

@ tnk479 die Migrationsdatei. Bearbeitet, um es klarer zu machen
Colin

Traurig zu sehen, dass ältere Version von EF (wie EF 6) nicht hat drop-databaseund remove-migrationbefiehlt
Hamza Khanzada

15

Wenn Sie die Migration noch nicht mit ausgeführt haben Update-Database, können Sie sie Add-Migrationerneut mit demselben Namen -Forceausführen (möglicherweise müssen Sie sie verwenden ), um das Gerüst erneut auszuführen. Dies wird in der Ausgabe des Add-MigrationBefehls vermerkt .


Dies ist keine gute Lösung, da dies ApplicationDbContextModelSnapshot
Trojaner

@Trojaner Sie haben Recht, also ist die Antwort stackoverflow.com/a/46921867/690958 die bessere Lösung
Alberto León

11

Verwenden Sie einfach den Befehl

Remove-migration

Die zuletzt hinzugefügte Migration wird entfernt und der Snapshot aktualisiert. Die Datenbank wird nicht beeinflusst, daher müssen Sie zuerst die Datenbank zurücksetzen.


5
Nur in EF Core.
John

Ich wünschte, es wäre dort in EF 6 zusammen mit drop-databaseBefehlen. Ich bin zu daran
Hamza Khanzada

4

Mit EntityFrameworkCore 2.0 wird der Modellschnappschuss geliefert. Sie müssen den Befehl zum Entfernen der Migration ausführen, um den Modell-Snapshot zu aktualisieren. Ich habe gelesen, dass EF Core jedes Update erkennt und den Snapshot für Sie zurücksetzt, wenn Sie die Migration manuell löschen, aber dies hat bei mir nicht funktioniert.

https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet#dotnet-ef-migrations-remove


3

Um die Antwort von @Ben zu ergänzen, benötigen Sie bei Verwendung der dotnet efBefehlsvielfalt den Befehl remove:

dotnet ef migrations remove

Dadurch wird Ihre letzte Migration entfernt und der Modell-Snapshot aktualisiert.


2

Aktualisieren Sie Ihre letzte perfekte Migration über diesen Befehl:

Update-Database –TargetMigration

0

Verwenden Sie einfach den Befehl:

Update-Database nameMigration -context nameContext

Und dann

Remove-migration -Context nameContext
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.