Miré en el código fuente para SchemaUpdate. Sabía que SchemaUpdate podría detectar una tabla faltante y luego generar una secuencia de comandos de creación, en lugar de una secuencia de comandos de actualización. Efectivamente, la respuesta estaba allí.
La función GetTableMetadata
en el objeto NHibernate.Tool.hbm2ddl.DatabaseMetadata
devolverá nulo si una tabla no existe en una base de datos.
Normalmente, SchemaUpdate crea un objeto DatabaseMetadata y lo transfiere a un objeto Configuration
. Pero parece que todo lo que necesita para crear un DatabaseMetadata es un objeto DBConnection y Dialect.
SchemaUpdate crea una DatabaseMetaData así:
connectionHelper.Prepare();
connection = connectionHelper.Connection;
meta = new DatabaseMetadata(connection, dialect);
NHibernate.Cfg.Configuration
llama entonces
ITableMetadata tableInfo = databaseMetadata.GetTableMetadata(...);
¿Desea para comprobar que en contra de su asignación? –
de cualquier manera, quiero ver si existe la tabla física. –