Entonces, usuario novato de NHibernate; tratando de envolver mi cerebro alrededor de eso.¿Puede NHibernate comprobar si se ha generado el esquema db?
Estoy considerando cómo manejar la implementación y la posterior inyección de complementos en una aplicación web (que puede requerir sus propias clases de persistencia).
Estaba pensando que usar SchemaExport
para el despliegue funcionaría bastante bien, pero me preguntaba si hay una forma de conseguir que NHibernate me diga de una manera común, basada en código, que ya se ha realizado una exportación de esquema, o no. Básicamente, lo que quiero hacer smething como en este pseudocódigo:
if(!_cfg.HasSchemaForType(typeof(MyType))
ExportSchema(typeof(MyType));
else
UpdateSchema(typeof(MyType));
donde las dos funciones utilizarían internamente SchemaExport
o SchemaUpdate
, respectivamente.
EDIT: Chicos, Agradezco la respuesta hasta el momento, pero les falta un poco el punto. Lo que estoy tratando de configurar es una forma para que la aplicación permita la adición y eliminación de complementos que pueden requerir cambios en la base de datos. No estoy hablando de versionar mi propio código o similar (al menos no como su función principal). Por lo tanto, la pregunta es menos sobre cuándo implementar la aplicación y más sobre cuándo agrego o elimino un complemento. ¿Se ha implementado este complemento (por lo tanto, la comprobación de tipo de pseudocódigo) anteriormente? Si es así, ejecuta la actualización. Si no, ejecuta la exportación. ¿Tener sentido?
No estoy intentando resolver el problema de la implementación de la aplicación. Agregué algunas notas adicionales para aclarar. ¡Gracias por su respuesta! – Paul
No creo que quiera decir en el momento del despliegue ... esto tendría que ser en tiempo de ejecución o de inicialización ... los complementos deberían ser responsables de sus propias dependencias. – Webjedi
Gracias; Marqué el suyo como "respondido" porque era el más completo. Creo que tener una preocupación aparte de que las pistas de los complementos que se han implementado es probablemente la mejor ruta, como sugiere en su tercera viñeta. – Paul