2009-10-22 15 views
15

Estoy tratando de refinar mi flujo de trabajo en NHibernate y un esquema que cambia con relativa frecuencia, y la mejor forma de lidiar con esto. Me gustaría aplicar la misma solución a los sistemas de producción, así que creo que necesito un motor de migración en lugar de solo la Actualización de esquema.nhibernate + migrations workflow

Lo que quiero saber es cómo puedo refinar el flujo de trabajo en la medida de lo posible para que haga el menor trabajo posible para sincronizar mi base de datos con mi modelo de dominio. El enfoque tarantino de las secuencias de comandos se ve bien, pero no parece haber una forma de generar la secuencia de comandos de actualización desde mis asignaciones de nHibernate, por lo que estoy a mano para crear una secuencia de comandos o utilizar una herramienta de comparación de SQL de redgate. ¿Hay algo que me falta que haría la vida más fácil en la etapa de generación de guiones?

Gracias, Chris

Respuesta

1

No he utilizado ninguno de estos migration tools for .net mí mismo, pero al probar Ruby on Rails en mi tiempo libre hace unos años, vi los beneficios de las migraciones en comparación con el T-SQL scripts que utilizamos en mi trabajo en ese momento.

+0

gracias por su sugerencia, sin embargo, mi pregunta era más acerca de la optimización del flujo de trabajo en lugar de qué herramientas están disponibles ... – Chris

1

En un proyecto reciente en el que he estado, hemos descubierto que las migraciones, combinadas con la ramificación VCS y NHibernate pueden causar varios dolores de cabeza y desventajas en el camino.

Lo que hicimos fue configurar NHibernate para generar el esquema con cada compilación automatizada (para el entorno de desarrollo) junto con cierta carga de datos.

Para el entorno de producción, teníamos una secuencia de comandos que, en función del esquema actual y el esquema deseado, generaba una migración con los campos y modificaciones necesarios.

+1

¿Automatizó la generación de este script de desarrollo de producción? –

0

Utilizamos SQL Compare. Se paga pero vale la pena la inversión. Mantenga cada uno de los scripts generados bien organizados, es decir, con la marca de tiempo, y obtendrá una buena forma de generar la base de datos para cualquiera de las versiones lanzadas.

Este es nuestro flujo habitual

  1. Durante DEV tenemos dos bases de datos "Nombre del Proyecto" y "ProjectName_TEST".
  2. Para cada cambio de esquema generamos (NHibernate) una nueva base de datos y reemplazamos "ProjectName_TEST".
  3. Usamos SQL Compare para actualizar "ProjectName" (manteniendo todos los datos dev en él)
  4. En el momento de la publicación, comparamos "ProjectName_TEST" con la base de datos de producción y generamos un script de actualización.

Eche un vistazo a command line options ya que son bastante útiles para automatizar el proceso a través de eventos de compilación VS.