Ich möchte zu diesem Thema eine Klarstellung vornehmen:
Update-Database -TargetMigration:"name_of_migration"
Was Sie oben tun, bedeutet, dass Sie alle Migrationen zurücksetzen wollen, bis Sie nur noch die angegebene Migration haben. Wenn Sie also GET-MIGRATIONS verwenden und feststellen, dass Sie A, B, C, D und E haben, dann werden Sie mit diesem Befehl E und D zurücksetzen, um zu C zu gelangen:
Update-Database -TargetMigration:"C"
Außerdem ist mir aufgefallen, dass Sie einen Ordinalwert und den kurzen Schalter -Target verwenden können (also ist -Target dasselbe wie -TargetMigration), es sei denn, jemand kann das Gegenteil behaupten. Wenn Sie alle Migrationen rückgängig machen und von vorne beginnen möchten, können Sie dies tun:
Update-Database -Target:0
0, oben, würde sogar die ERSTE Migration rückgängig machen ( Dies ist ein destruktiver Befehl - seien Sie sicher, dass Sie wissen, was Sie tun, bevor Sie ihn verwenden! )- etwas, das Sie nicht tun können, wenn Sie die obige Syntax verwenden, die den Namen der Zielmigration erfordert (der Name der 0. Migration existiert nicht, bevor eine Migration angewendet wird!). In diesem Fall müssen Sie also den Wert 0 (Ordnungszahl) verwenden. Wenn Sie die Migrationen A, B, C, D und E (in dieser Reihenfolge) angewendet haben, sollte sich die Ordnungszahl 1 auf A beziehen, die Ordnungszahl 2 auf B usw. Für ein Rollback zu B könnten Sie also entweder:
Update-Database -TargetMigration:"B"
o
Update-Database -TargetMigration:2
Oktober 2019 bearbeiten:
Nach diesem Zusammenhang Antwort bei einer ähnlichen Frage lautet der richtige Befehl -Target
für EF Core 1.1, während es sich -Migration
für EF Core 2.0.