Chcę dodać wyjaśnienie do tego wątku:
Update-Database -TargetMigration:"name_of_migration"
To, co robisz powyżej, mówi, że chcesz wycofać wszystkie migracje, dopóki nie pozostaniesz z określoną migracją. Zatem jeśli użyjesz GET-MIGRATIONS i okaże się, że masz A, B, C, D i E, to użycie tego polecenia spowoduje cofnięcie E i D, aby dostać się do C:
Update-Database -TargetMigration:"C"
Ponadto, chyba że ktokolwiek może skomentować inaczej, zauważyłem, że można użyć wartości porządkowej i krótkiego przełącznika -Target (a zatem -Target jest taki sam jak -TargetMigration). Jeśli chcesz wycofać wszystkie migracje i zacząć od nowa, możesz użyć:
Update-Database -Target:0
0 powyżej cofnęłoby nawet PIERWSZĄ migrację ( jest to destrukcyjne polecenie - upewnij się, że wiesz, co robisz przed użyciem! ) - coś, czego nie możesz zrobić, jeśli użyjesz powyższej składni, która wymaga nazwy migracja docelowa (nazwa 0 migracji nie istnieje przed zastosowaniem migracji!). W takim przypadku musisz użyć wartości 0 (porządkowej). Podobnie, jeśli zastosowałeś migracje A, B, C, D i E (w tej kolejności), wówczas porządek 1 powinien odnosić się do A, porządek 2 powinien odnosić się do B i tak dalej. Aby przywrócić B, możesz użyć:
Update-Database -TargetMigration:"B"
lub
Update-Database -TargetMigration:2
Edytuj październik 2019:
Zgodnie z tą pokrewną odpowiedzią na podobne pytanie, poprawne polecenie dotyczy -Target
EF Core 1.1, podczas gdy dotyczy to -Migration
EF Core 2.0.