visual update studio remove migrations framework force first existing enable code entity-framework entity-framework-4 database-migration ef-migrations code-first-migrations

entity framework - update - Migraciones EF: ¿Deshacer la última migración aplicada?



update model entity framework code first (7)

A partir de EF 5.0, el enfoque que usted describe es la forma preferida. Una solución sería crear un script de PS de envoltorio 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! http://entityframework.codeplex.com/

Esto parece una tarea muy común, pero no puedo encontrar una manera fácil de hacerlo.

Quiero deshacer la última migración aplicada. Hubiera esperado un comando simple, como

PM> Update-Database -TargetMigration:"-1"

En cambio, todo lo que puedo hacer es:

PM> Get-Migrations Retrieving migrations that have been applied to the target database. 201208012131302_Add-SystemCategory 201207311827468_CategoryIdIsLong 201207232247409_AutomaticMigration 201207211340509_AutomaticMigration 201207200025294_InitialCreate PM> Update-Database -TargetMigration:"CategoryIdIsLong"

(Al menos puedo usar solo el nombre, saltándome la marca de tiempo ...)

hay una manera mas facil?


En EntityFrameworkCore :

Update-Database 20161012160749_AddedOrderToCourse

donde 20161012160749_AddedOrderToCourse es un nombre de migración al que desea revertir.


En EF Core, puede ingresar el comando Remove-Migration en la consola del administrador de paquetes después de haber agregado su migración errónea.

La consola sugiere que lo haga si su migración podría implicar una pérdida de datos:

Se realizó un andamiaje de una operación que puede resultar en la pérdida de datos. Por favor revise la migración para la exactitud. Para deshacer esta acción, use Remove-Migration.


Estoy usando EntityFrameworkCore y uso la respuesta de @MaciejLisCK. Si tiene múltiples contextos de base de datos, también deberá especificar el contexto agregando el parámetro de contexto, por ejemplo:

Update-Database 201207211340509_MyMigration -context myDBcontext

(donde 201207211340509_MyMigration es la migración que desea revertir, y myDBcontext es el nombre de su contexto de base de datos)


La solucion es:

Update-Database –TargetMigration 201609261919239_yourLastMigrationSucess


Quiero añadir alguna 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 encuentra que tiene A, B, C, D y E, entonces el uso de este comando hará 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 modificador corto de destino (por lo tanto, -Target es el 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 migración número 0 no existe antes de que se aplique una migración!). Entonces, en ese caso, tienes que 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 debe referirse a A, el ordinal 2 debe referirse a B, y así sucesivamente. Entonces, para volver a B, puedes usar:

Update-Database -TargetMigration:"B"

o

Update-Database -TargetMigration:2


Recordatorio adicional:

Si tiene varios tipos de configuración, debe especificar el [Nombre de configuración]

Update-Database -Configurationtypename [ConfigurationName] -TargetMigration [MigrationName]