Я хочу добавить некоторые пояснения к этой теме:
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"
or
Update-Database -TargetMigration:2
Редактировать октябрь 2019 г .:
Согласно этому связанному ответу на аналогичный вопрос, правильная команда -Target
для EF Core 1.1, а -Migration
для EF Core 2.0. .
person
Jazimov
schedule
21.05.2014