2012-04-24 19 views
13

Siempre me ha parecido que el control de versiones es un problema cuando se trata de esquemas de bases de datos.Uso del código de Entity Framework Primeras migraciones en un proyecto DVCS

So - Actualmente estoy evaluando Entity Framework Code First Migrations y hasta el momento estoy realmente impresionado.

Mi pregunta es, ¿alguien tiene alguna experiencia en el uso de migraciones en un equipo que usa un DVCS?

Si los desarrolladores que trabajan en ramas diferentes crean sus propias Migraciones, ¿la herramienta 'Actualizar-Base de datos' hace frente a eso cuando las ramas se fusionan?

Supongo que lo que podría suceder es que aparezca una nueva migración en el medio de la lista. ¿Esto luego sería recogido, o solo busca migraciones 'más nuevas' que la última implementada?

Aprecio que el equipo tenga que tener cuidado de no crear cambios de esquema conflictivos, esto es algo que podemos gestionar, pero sería útil saber si 'Update-Database' es lo suficientemente inteligente como para detectar la 'faltante' ' ¿migración?

Gracias, - Chris

+2

¿ha llegado a una conclusión con esto? – sirrocco

Respuesta

1

De acuerdo con el blog post que pude encontrar sobre el tema, parece que el desarrollo paralelo, independientemente de la herramienta VCS, es problemático con el estado actual de las migraciones de bases de datos en la FE. No parece haber una manera de manejar el escenario debido a cómo rastrea el estado de la base de datos. Pawel proporciona un example project on GitHub para mostrar el problema.

En realidad, puede ser mucho mejor utilizar una herramienta independiente para manejar las migraciones de su base de datos. He usado Migrator.NET con mucho éxito y maneja adecuadamente los cambios de esquema de los desarrolladores paralelos. También utiliza un método de baja tecnología para rastrear la "versión" de la base de datos, que funciona sorprendentemente siempre que usted y su equipo decidan el día en que nadie toque la base de datos excepto a través de una clase de migración (llamamos ese día v1 de la base de datos).

+0

Mire también a [FluentMigrator] (http://nuget.org/packages/FluentMigrator). Parece que Migrator.NET quedó obsoleto y este proyecto tiene muchas similitudes. Lo encendí anoche e incluso tiene una forma de usar las clases de migración Migrator.NET existentes. – Sumo

0

No creo que funcione y no creo que haya una forma de evitarlo.

Ver this blog post para más detalles.

Mi recomendación sería utilizar una herramienta diferente para administrar sus migraciones.

1

Las soluciones en este artículo podrían funcionar para usted. Usted toma un paso adicional al crear una migración en blanco que ignora los cambios del otro desarrollador. Esto actualiza la instantánea para estar sincronizada con la base de datos.

http://msdn.microsoft.com/en-us/data/dn481501.aspx

Cuestiones relacionadas