13

He estado jugando con Entity Framework 4, utilizando el enfoque basado en modelos para generar el script de base de datos desde mis entidades. Esto es genial, pero no estoy seguro de cómo funciona cuando se trata de versionar la base de datos. Supongo que si quisiera utilizar un marco de migración de tipo de registro activo, tendría que trabajar al revés y generar mis entidades desde mi base de datos. ¿Hay alguna forma de utilizar el enfoque impulsado por el modelo y la versión de la base de datos correctamente?Migraciones de bases de datos para Entity Framework 4

+0

Microsoft está trabajando activamente en esta función de Entity Framework, se puede leer sobre ello en el blog del equipo de ADO.NET como los mensajes Código primeras migraciones. http://blogs.msdn.com/b/adonet/ –

Respuesta

16

Esto vendrá pronto como un paquete NuGet llamados EntityFramework.Migrations

Una demostración se realizó por Scott Hanselman en TechEd 2011 (disponible en línea en http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV349). La sección correspondiente es de 45 minutos en

En resumen, una vez que se instala el paquete, usted entrará en la siguiente en la consola de Administrador de paquetes para generar una secuencia de comandos de cambio de base de datos:.

migrate -script 

ACTUALIZACIÓN (13 -Nov-2011)

La versión alpha 3 de este paquete ya está disponible en NuGet. En lugar de utilizar el cmdlet migrate -script mencionado anteriormente, utiliza el cmdlet Add-Migration <migrationname>. Un walk-through of its use se puede encontrar en el blog del equipo ADO.NET.

UPDATE (14-Feb-2012)

Esta funcionalidad está ahora disponible como parte de la principal EntityFramework NuGet package, comenzando con la versión 4.3. Puede encontrar un updated walk-through usando EF 4.3 en el blog del equipo ADO.NET.

+0

+1 para actualizar – Karsten

0

Bueno, si quieres trabajar como ActiveRecord, entonces necesitas trabajar como ActiveRecord. :)

Sin embargo, si desea utilizar el modelo primero pero aún usar migraciones, esto será posible, pero requerirá trabajo adicional en su nombre. Model-first generará un script de cambio de base de datos. Deberá extraer las partes relevantes en las migraciones, así como escribir manualmente las secuencias de comandos de deshacer. Aunque esto implica un poco de trabajo manual, no me parece tan terriblemente difícil.

2

Puede probar Wizardby: esta es una herramienta para gestionar migraciones de bases de datos. No se integra con EF (ya que es casi imposible integrarse con él a este respecto), pero hace el trabajo.

+0

Super! este es un proyecto de código abierto muy prometedor! – Korayem

1

ScottGu menciona algo acerca de esto en un blog entry:

También vamos a estar apoyando una característica de “migraciones” con EF en el futuro que le permitirá automatizar/migraciones guión de esquema de base de datos mediante programación.

[EDIT]

Creo que podría estar refiriéndose a la Entity Designer Database Generation Power Pack, como respondida por Morteza Manavi en another SO answer.

0

Estoy trabajando en una alternativa a la biblioteca EF.Migrations - EntityFramework.SchemaCompare. Permite comparar físicamente un esquema db con un modelo de entidades que representa el contexto de la base de datos (EF.Migrations no lo hace). Esto puede activarse durante la inicialización de la base de datos o manualmente a petición.Consideremos el siguiente ejemplo

#if DEBUG 
Database.SetInitializer(new CheckCompatibilityWithModel<DatabaseContext>()); 
#endif 

Se producirá una excepción durante la inicialización de la base de datos que describe las diferencias entre el esquema y el modelo db si se encuentran problemas de incompatibilidad. Alternativamente, usted puede encontrar esas diferencias en cualquier momento en su código de esta manera

using (var ctx = new DatabaseContext()) 
{ 
    var issues = ctx.Database.FindCompatibilityIssues(); 
} 

luego tener esas diferencias/problemas de incompatibilidad en las manos la posibilidad de actualizar el esquema de db o el modelo.

Este enfoque es particularmente útil cuando necesita un control completo sobre el esquema de la base de datos y el diseño del modelo y/o trabaja en un equipo donde varios miembros del equipo trabajan en el mismo esquema y modelo db. También se puede usar además de EF.Migrations.

Tenedor mí en GitHub: https://github.com/kriasoft/data

Cuestiones relacionadas