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?

Miguel Angelo
quelle

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/

Colin
quelle
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 .

Adrian
quelle
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.

Tomasz Maj
quelle
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

Ben
quelle
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.

veuncent
quelle
2

Aktualisieren Sie Ihre letzte perfekte Migration über diesen Befehl:

Update-Database –TargetMigration
Abdus Salam Azad
quelle
0

Verwenden Sie einfach den Befehl:

Update-Database nameMigration -context nameContext

Und dann

Remove-migration -Context nameContext
Hugo Borges
quelle