Я определенно рекомендую POD.
POD может также использоваться встроенный с кодом, но я предпочитаю помещать в конце программы после __ КОНЕЦ __ (как рекомендовал Damian Conway в Лучшие практики Perl ).
Взгляд POD:: Сервер & POD:: Веб-сервер , который предоставляет веб-фронтенд всем Вашим ПЕРЕХОДНЫМ ПРИСТАВКАМ.
Если вы где-то храните конфигурацию NHibernate или делаете это до построения фабрики сеанса, можно проверить сгенерированную схему по базе данных.
public void ValidateSchema(Configuration config)
{
new SchemaValidator(config).Validate();
}
Я просмотрел исходный код SchemaUpdate. Я знал, что SchemaUpdate может обнаружить отсутствующую таблицу и затем сгенерировать сценарий создания, а не сценарий обновления. Конечно же, ответ был там.
Функция GetTableMetadata
в объекте NHibernate.Tool.hbm2ddl.DatabaseMetadata
вернет null, если таблица не существует в базе данных.
Обычно SchemaUpdate создает объект DatabaseMetadata и передает его в объект Configuration
. Но похоже, что все, что вам нужно для создания DatabaseMetadata, - это объект DBConnection и Dialect.
SchemaUpdate создает DatabaseMetadata таким образом:
connectionHelper.Prepare();
connection = connectionHelper.Connection;
meta = new DatabaseMetadata(connection, dialect);
NHibernate.Cfg.Configuration
затем вызывает
ITableMetadata tableInfo = databaseMetadata.GetTableMetadata(...);