Pregunta

He estado jugando con Entity Framework 4, utilizando el enfoque basado en modelos para generar la secuencia de comandos de base de datos de mis entidades. Esto es muy bueno, pero no estoy seguro de cómo funciona esto cuando se trata de versiones de la base de datos. Supongo que si quería utilizar un registro marco migratorio tipo activo que tendría que trabajar a la inversa y generar mis entidades de base de datos? ¿Hay alguna manera de utilizar el enfoque basado en modelos y la versión de la base de datos correctamente?

¿Fue útil?

Solución

Esto será muy 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 pertinente es de 45 minutos en.

En resumen, una vez que se instala el paquete, se le introduce lo siguiente en la consola Administrador de paquetes para generar una secuencia de comandos de cambio de base de datos:

migrate -script

ACTUALIZACIÓN (13-Nov-2011)

La acumulación de alfa 3 de este paquete ya está disponible en NuGet. En lugar de utilizar el migrate -script cmdlet se ha mencionado anteriormente, se utiliza el Add-Migration <migrationname> cmdlet. A paseo a través de su uso se puede encontrar en el blog del equipo de ADO.NET.

UPDATE (14-Feb-2012)

Esta funcionalidad ya está disponible como parte de la ADO.NET Entity Framework NuGet empaquetar , a partir de la versión 4.3. Un actualiza recorrido usando EF 4.3 se puede encontrar en el blog del equipo de ADO.NET.

Otros consejos

Puede intentar Wizardby : esta es una herramienta para la gestión de las migraciones de bases de datos. No se integra con EF (ya que es casi imposible de integrar con ella a este respecto), pero hace el trabajo.

ScottGu menciona algo sobre esto en un rel entrada de blog :

  

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

[EDIT]

Creo que puede estar refiriéndose a la href="http://visualstudiogallery.msdn.microsoft.com/df3541c3-d833-4b65-b942-989e7ec74c87/" rel="nofollow noreferrer"> Generación de base de datos Entidad Diseñador , como respondida por Morteza Manavi en otra respuesta SO .

Bueno, si quieres obra como ActiveRecord, entonces usted necesita para trabajar como ActiveRecord. :)

Sin embargo, si usted desea utilizar en el modelo primero, pero aún utiliza las migraciones, esto será posible pero requiere trabajo adicional de su parte. Modelo-primera generará una secuencia de comandos de cambio de base de datos. Usted tendrá que extraer las partes pertinentes en las migraciones, así como escribir manualmente deshacer guiones. Aunque esto implica algún trabajo manual, no me parece que sea terriblemente difícil.

Estoy trabajando en una alternativa a la biblioteca EF.Migrations - EntityFramework.SchemaCompare . Permite comparar físicamente a un esquema de db con un modelo de entidades que representan contexto de base de datos (EF.Migrations no lo hacen). Esto puede ser despedido, ya sea durante la inicialización de la base de datos de forma manual o por encargo. 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();
}

A continuación, tener esas diferencias / problemas de incompatibilidad en las manos puede actualizar o bien el esquema de db o el modelo.

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

Me tenedor en GitHub: https://github.com/kriasoft/data

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top