Я хочу добавить некоторые пояснения к этой теме:
Update-Database -TargetMigration:"name_of_migration"
То, что вы делаете выше, говорит, что вы хотите откатить все миграции до тех пор, пока у вас не останется указанная миграция. Таким образом, если вы используете GET-MIGRATIONS и обнаружите, что у вас есть A, B, C, D и E, то с помощью этой команды откат E и D приведет вас к C:
Update-Database -TargetMigration:"C"
Кроме того, если кто-то не может прокомментировать обратное, я заметил, что вы можете использовать порядковое значение и короткий ключ -Target (таким образом, -Target - это то же самое, что и -TargetMigration). Если вы хотите откатить все миграции и начать заново, вы можете использовать:
Update-Database -Target:0
0, выше, приведет к откату даже ПЕРВОЙ миграции ( это деструктивная команда - убедитесь, что вы знаете, что делаете, прежде чем ее использовать! ) - что вы не сможете сделать, если используете приведенный выше синтаксис, требующий имени целевая миграция (имя 0-й миграции не существует до применения миграции!). Так что в этом случае вы должны использовать значение 0 (порядковый номер). Аналогично, если вы применили миграции A, B, C, D и E (в этом порядке), то порядковый номер 1 должен ссылаться на A, порядковый номер 2 должен ссылаться на B и так далее. Таким образом, для отката на B вы можете использовать либо:
Update-Database -TargetMigration:"B"
или
Update-Database -TargetMigration:2
Изменить октябрь 2019 года:
Согласно этому связанному ответу на аналогичный вопрос, правильная команда -Target
для EF Core 1.1, в то время как -Migration
для EF Core 2.0.