Quiero agregar algunas aclaraciones a este hilo:
Update-Database -TargetMigration:"name_of_migration"
Lo que está haciendo arriba es decir que desea revertir todas las migraciones HASTA que quede con la migración especificada. Por lo tanto, si usa GET-MIGRATIONS y descubre que tiene A, B, C, D y E, entonces, al usar este comando, E y D retrocederán para llegar a C:
Update-Database -TargetMigration:"C"
Además, a menos que alguien pueda comentar lo contrario, noté que puede usar un valor ordinal y el interruptor corto -Target (por lo tanto, -Target es lo mismo que -TargetMigration). Si desea revertir todas las migraciones y comenzar de nuevo, puede usar:
Update-Database -Target:0
0, arriba, revertiría incluso la PRIMERA migración ( este es un comando destructivo; ¡asegúrese de saber lo que está haciendo antes de usarlo! ), Algo que no puede hacer si usa la sintaxis anterior que requiere el nombre de la migración de destino (¡el nombre de la 0ª migración no existe antes de que se aplique una migración!). Entonces, en ese caso, debe usar el valor 0 (ordinal). Del mismo modo, si ha aplicado las migraciones A, B, C, D y E (en ese orden), el ordinal 1 debería referirse a A, el ordinal 2 debería referirse a B, y así sucesivamente. Entonces, para retroceder a B, puede usar:
Update-Database -TargetMigration:"B"
o
Update-Database -TargetMigration:2
Editar octubre de 2019:
De acuerdo con esta respuesta relacionada en una pregunta similar, el comando correcto es -Target
para EF Core 1.1 mientras que -Migration
para EF Core 2.0.