Как Вы проверяете, существует ли таблица с NHibernate (или Быстрый)?

Я определенно рекомендую POD.

POD может также использоваться встроенный с кодом, но я предпочитаю помещать в конце программы после __ КОНЕЦ __ (как рекомендовал Damian Conway в Лучшие практики Perl ).

Взгляд POD:: Сервер & POD:: Веб-сервер , который предоставляет веб-фронтенд всем Вашим ПЕРЕХОДНЫМ ПРИСТАВКАМ.

5
задан Mark Rogers 11 November 2010 в 00:57
поделиться

2 ответа

Если вы где-то храните конфигурацию NHibernate или делаете это до построения фабрики сеанса, можно проверить сгенерированную схему по базе данных.

    public void ValidateSchema(Configuration config)
    {
        new SchemaValidator(config).Validate();
    }
12
ответ дан 18 December 2019 в 09:50
поделиться

Я просмотрел исходный код 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(...);
3
ответ дан 18 December 2019 в 09:50
поделиться