Ho cercato il codice sorgente per SchemaUpdate. Sapevo che SchemaUpdate poteva rilevare una tabella mancante e quindi generare uno script di creazione, piuttosto che uno script di aggiornamento. Abbastanza sicuro, la risposta era lì dentro.
La funzione GetTableMetadata
nell'oggetto NHibernate.Tool.hbm2ddl.DatabaseMetadata
restituisce null se una tabella non esiste in un database.
Normalmente, SchemaUpdate crea un oggetto DatabaseMetadata e passa in un oggetto Configuration
. Ma sembra che tutto ciò che serve per creare un DatabaseMetadata sia un oggetto DBConnection e Dialect.
SchemaUpdate crea un DatabaseMetaData questa convenzione:
connectionHelper.Prepare();
connection = connectionHelper.Connection;
meta = new DatabaseMetadata(connection, dialect);
NHibernate.Cfg.Configuration
poi chiama
ITableMetadata tableInfo = databaseMetadata.GetTableMetadata(...);
fonte
2009-10-13 01:50:07
Siete alla ricerca di controllare contro la mappatura? –
in entrambi i casi, voglio vedere se esiste la tabella fisica. –