Ich möchte diesem Thread einige Erläuterungen hinzufügen:
Update-Database -TargetMigration:"name_of_migration"
Was Sie oben tun, ist zu sagen, dass Sie alle Migrationen zurücksetzen möchten, BIS Sie mit der angegebenen Migration belassen haben. Wenn Sie also GET-MIGRATIONS verwenden und feststellen, dass Sie A, B, C, D und E haben, werden mit diesem Befehl E und D zurückgesetzt, um zu C zu gelangen:
Update-Database -TargetMigration:"C"
Außerdem habe ich festgestellt, dass Sie einen Ordnungswert und den kurzen Schalter -Target verwenden können, es sei denn, jemand kann etwas anderes kommentieren (daher ist -Target dasselbe wie -TargetMigration). Wenn Sie alle Migrationen zurücksetzen und neu beginnen möchten, können Sie Folgendes verwenden:
Update-Database -Target:0
0 oben würde sogar die ERSTE Migration rückgängig machen ( dies ist ein destruktiver Befehl - stellen 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, für die der Name erforderlich ist die Zielmigration (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 Migrationen A, B, C, D und E (in dieser Reihenfolge) angewendet haben, sollte sich die Ordnungszahl 1 auf A beziehen, Ordnungszahl 2 auf B usw. Zum Zurücksetzen auf B können Sie entweder Folgendes verwenden:
Update-Database -TargetMigration:"B"
oder
Update-Database -TargetMigration:2
Bearbeiten Oktober 2019:
Gemäß dieser verwandten Antwort auf eine ähnliche Frage gilt der richtige Befehl -Target
für EF Core 1.1, während er -Migration
für EF Core 2.0 gilt.