En NHibernate, puede usar la clase SchemaUpdate para realizar cambios aditivos en su esquema. (Los cambios adicionales incluirían nuevas tablas, nuevas columnas, etc., pero no se eliminarán). SchemaUpdate está destinado a fines de desarrollo y no está destinado a ejecutarse en producción. Recomiendo consultar una herramienta de migración SQL como Tarantino, dbdeploy.net, RikMigrations o similar.
Las herramientas de migración vienen en dos sabores: SQL basado en script (Tarantino y dbdeploy.net) y basado en código (RikMigrations y Rails-style migrations). Con una herramienta de migración basada en código, usted escribe sus migraciones usando un código escrito en C#, VB, Ruby, ... Las herramientas basadas en script SQL toman un conjunto ordenado de scripts SQL. En cualquier caso, la herramienta de migración ejecuta migraciones contra su base de datos que no se han ejecutado antes. (Normalmente, una mesa de migraciones se enumeran las secuencias de comandos que se han ejecutado y permite que la herramienta para averiguar qué todavía hay que ejecutar.) Las secuencias de comandos SQL se generan a través de:
// SchemaUpdate.Execute(bool script, bool doUpdate)
new SchemaUpdate(cfg).Execute(true, false);
y luego editadas al gusto. O bien, podría generar un nuevo esquema utilizando SchemaExport de NHibernate y utilizando una herramienta de diferencia de esquema como Microsoft Visual Studio para Professionals de base de datos Ultimate Now con Extra Mayo Edition (también conocido como DataDude) o RedGate SQL Compare. Tendrá que escribir scripts de transformación a mano, ya que no hay forma en general para que la herramienta de migración de SQL sepa que esa columna Foo char (1) llena de T/F debe transformarse en esa columna Bar bit.
Personalmente prefiero las herramientas de migración basadas en scripts SQL, ya que puedo generar los diffs de esquema usando una herramienta y luego editar para probar en lugar de tener que realizar manualmente la migración completa usando C# o un lenguaje similar.
+1 para una excelente respuesta. –
Esto es genial. Sería genial ver enlaces a otros recursos/blogs sobre esto. – syclee