8

Tengo un problema que no pude encontrar en toda la web.EF 4.3 Migración: ¿cómo generar un script de degradación?

Estoy usando CodeFirst EF 4.3.1 Migraciones con MsSQL.

He agregado varias migraciones y ahora quiero producir una secuencia de comandos para la actualización/degradación entre dos migraciones.

Para la actualización funciono con el comando siguiente que reproduce con éxito un script de actualización:

PM> Update-Database -Script -SourceMigration:"201205161144187_AddPostAbstract" -TargetMigration:"201205161203310_BlogLimitsAndTableRename" 

Sin embargo, para una rebaja funciono con el comando después de lo cual se produce el siguiente error:

PM> Update-Database -Script -SourceMigration:"201205161203310_BlogLimitsAndTableRename" -TargetMigration:"201205161144187_AddPostAbstract" 
Scripting the downgrade between two specified migrations is not supported. 

Todas las ideas ¿Cómo puedo generar un script de degradación?

Gracias.

Respuesta

10

Parece que la API de migración espera que desee hacer una degradación solo desde la "última versión".

Si BlogLimitsAndTableRename es la migración más reciente (la última aplicada) simplemente puede ejecutar:

Update-Database -Script -TargetMigration:"201205161144187_AddPostAbstract" 

Si no es su última migración necesita volver a su base de datos de desarrollo a lo primero:

Update-Database -TargetMigration:"201205161203310_BlogLimitsAndTableRename" 

y ahora debería poder usar el primer comando para obtener un script.

+0

Tiene sentido. Imagínese que tiene una base de datos en el estado 5 e intentará hacer que una secuencia de comandos baje de 4 a 3. Entonces la base de datos se puede corromper fácilmente. O señalarlo a db realmente en el estado 4 o tener uno localmente presionado para indicar 4 te hace pensar en ello antes de crear un lío irreversible. OTOH podría ser compatible con un interruptor de fuerza o una gran advertencia roja. :) –

+1

Pensé en tener una base de datos en el estado 5 y ahora obtener un script para degradarlo de 5 a 2. La migración EF me obliga a degradar de 5 a 4, luego a degradar de 4 a 3 y luego de 3 a 2, mientras que todo lo que deseo es producir una sola secuencia de comandos que ya contenga todas estas degradaciones sin la necesidad de realmente ejecutarlas. (Para la actualización, por ejemplo, puede tener una base de datos en el estado 5 y producir un script de actualización de 2 a 5). – mayash

+0

O puede tener una base de datos en el estado 5 y producir un script de actualización de 2 a 4. – mayash

Cuestiones relacionadas