Saltar al contenido

Migraciones de EF: ¿Revertir la última migración aplicada?

Nuestros investigadores estrellas han agotado sus provisiones de café, buscando diariamente por la solución, hasta que Amelia encontró la solución en Bitbucket por lo tanto en este momento la compartimos contigo.

Solución:

Quiero añadir una aclaración a este hilo:

Update-Database -TargetMigration:"name_of_migration"

Lo que está haciendo arriba es decir que desea revertir todas las migraciones HASTA que se quede con la migración especificada. Por lo tanto, si usa GET-MIGRATIONS y descubre que tiene A, B, C, D y E, al usar este comando retrocederá E y D 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úrate de saber lo que estás 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 migración 0 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 hacer referencia a A, el ordinal 2 debería hacer referencia a B, y así sucesivamente. Entonces, para retroceder a B, podría usar:

Update-Database -TargetMigration:"B"

o

Update-Database -TargetMigration:2

Edición de octubre de 2019:

De acuerdo con esta respuesta relacionada en una pregunta similar, el comando correcto es -Target para EF Core 1.1 mientras está -Migration para EF Core 2.0.

A partir de EF 5.0, el enfoque que describe es la forma preferida. Asi que

PM> Update-Database -TargetMigration:"NameOfSecondToLastMigration"

o usando sus migraciones de ejemplo

PM> Update-Database -TargetMigration:"CategoryIdIsLong"

Una solución sería crear un script PS contenedor que automatice los pasos anteriores. Además, siéntase libre de crear una solicitud de función para esto, o mejor aún, intente implementarlo. https://github.com/dotnet/ef6

En EntityFrameworkCore:

Update-Database 20161012160749_AddedOrderToCourse

dónde 20161012160749_AddedOrderToCourse es el nombre de la migración a la que desea revertir.

Comentarios y puntuaciones

Nos encantaría que puedieras recomendar esta reseña si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *