2010-01-14 10 views
13

Por simplicidad. Estoy utilizando el Automapping de Fluent NHibernate combinado con SchemaUpdate de NHibernate durante el tiempo de ejecución. En cada ejecución, Automapper crea asignaciones para todas las clases de entidad y SchemaUpdate aplica el esquema a la base de datos existente. Me sorprendió gratamente que funcione correctamente en una base de datos vacía también. Hasta ahora ha funcionado bien en un entorno de desarrollo y me ha permitido responder a los errores con bastante rapidez.¿NHibernate SchemaUpdate es seguro en el código de producción?

Mi pregunta es si es lo suficientemente confiable como para dejarlo en el código de producción. Obviamente, no necesita ejecutarse cada vez que el programa se inicia en un entorno de producción, pero sería útil para las actualizaciones incrementales del producto (aunque no planeo realizar cambios importantes en el dominio una vez que el producto se envíe).

(Tal vez mi verdadera pregunta debería ser ¿Es seguro utilizar estas dos herramientas en conjunto?)

actualización

La aplicación tiene dos versiones: un escritorio independiente y un cliente/servidor multiusuario . También debido a la naturaleza del dominio comercial (software de impuestos), tengo el lujo de comenzar con una base de datos limpia cada año.

+0

Felicita tanto a CatZ como a Greg Beech por mencionar el tema de la seguridad. No había tomado eso en consideración. He pasado la mayor parte de mi tiempo en la versión de escritorio independiente donde la seguridad no es tan importante. –

Respuesta

12

Para poder ejecutar en código de producción, la cuenta que utiliza la aplicación de producción para conectarse a su base de datos debería tener permiso para cambiar el esquema de la base de datos.

Eso solo debería disuadirlo de este enfoque, independientemente de la calidad/fiabilidad del código NHibernate.

2

Depende de cuán críticos son los datos! Dudo que sea una buena idea para un sistema bancario. No he tenido ningún problema con la actualización aparte de una cosa. A veces no cambia el nombre correctamente. Además, es un riesgo de seguridad conectarse con una cuenta que puede modificar el esquema como ese :)

7

Es posible que desee considerar que SchemaUpdate siempre realizará cambios aditivos y no destructivos, lo que dará como resultado columnas obsoletas y columnas con nulos donde deberían no ser nulo.

En otras palabras, absolutamente no para uso en producción.

+1

¿Cuáles son buenas alternativas? migraciones de algún tipo? cualquier buen framework .net que recomendarías para eso? Gracias – andryuha

8

No me arriesgaría. Lo que funciona bien es ejecutarlo en un servidor intermedio que se haya restaurado desde la producción, luego usar una herramienta de comparación de base de datos (como Red Gate) para examinar los cambios y generar un script.

Cuestiones relacionadas