2012-04-10 12 views
11

Acabo de instalar Entity Framework Migrations, he agregado una propiedad a una clase y le he dado un giro a EF Migrations.Obtención del script inicial de Migraciones de Framework de Entidad

Mi base de datos de desarrollo se actualizó rápidamente. Hasta aquí todo bien.

Ahora, quiero crear un script de cambio para este inicial uso de migraciones para la base de datos de producción. Tenga en cuenta que había una base de datos preexistente porque la apliqué a un proyecto existente.

Las migraciones que tengo son:

PM> Get-Migrations 
Retrieving migrations that have been applied to the target database. 
201204102238194_AutomaticMigration 
201203310233324_InitialCreate 
PM> 

pensé que podría conseguir un guión delta utilizando la siguiente:

Update-Database -SourceMigration:201203310233324_InitialCreate -TargetMigration:201204102238194_AutomaticMigration -script 

Sin embargo, eso me da el error:

'201204102238194_AutomaticMigration' is not a valid migration. Explicit migrations must be used for both source and target when scripting the upgrade between them.

Solo para ver qué pasaría, invertí los dos parámetros (migración hacia atrás) y obtuve el script que deseaba Espero después de agregar el -force bandera (nuevas columnas caídas).

¿Cómo puedo obtener un script para esta primera migración?

+0

¿Cómo se obtuvo la migración inicial? Su migración automática debe contener la creación de secuencias de comandos para toda la base de datos, que no es lo que usted desea; la ejecución de dichas secuencias de comandos en los resultados de las bases de datos existentes implica muchos errores. ¿Puedes probar [este enfoque] (http://www.ladislavmrnka.com/2012/03/ef-4-3-migrations-and-existing-database) en su lugar? –

+0

@Ladislav: Realmente no necesito un script para toda la base de datos porque mi base de datos (inicial) ya está en producción. Lo que no puedo entender es cómo pasar de la primera base de datos que ya está en producción, antes de haber utilizado Migrations, a mi primera actualización. Estoy seguro de que Migrations tiene mi esquema de base de datos inicial allí en alguna parte porque la inversión de los parámetros SourceMigration y TargetMigration junto con * -force * crea una secuencia de comandos para DROP mis nuevas columnas. Simplemente no puedo hacer que vaya desde la base de datos inicial a la primera nueva iteración (agregue esas pocas columnas). –

Respuesta

14

La forma correcta de comenzar a usar las migraciones de EF con una base de datos existente es comenzar agregando una migración vacía que contenga los metadatos de la base de datos actual.

Creo que tiene que retroceder a un modelo que sea compatible con el esquema de la base de datos inicial. A continuación, ejecute el siguiente comando:

add-migration InitialSchema -IgnoreChanges 

que se debe dar una migración inicial, que no hace nada, pero contiene los metadatos del modelo actual. Por supuesto, puede agregar migraciones más tarde con -IgnoreChanges si ha expandido su modelo de código para cubrir más de las tablas ya presentes en la base de datos.

Una vez que tenga ese paso de migración inicial, los scripts funcionarán.

Generalmente, no recomendaría utilizar migraciones automáticas a menos que solo tenga la intención de utilizar migraciones automáticas. Si desea algún tipo de control sobre los cambios en la base de datos (incluidos los scripts), entonces las migraciones basadas en código son el camino.

Cuestiones relacionadas