Итак, новый пользователь NHibernate; пытаясь обернуть мой мозг вокруг него.
Я обдумываю, как управлять развертыванием и последующим внедрением надстроек в веб-приложение (для которых могут потребоваться свои собственные классы постоянства).
Я думал, что использование SchemaExport
для развертывания будет работать довольно хорошо, но мне было интересно, есть ли способ получить NHibernate, чтобы сказать мне обычным, основанным на коде способом, что экспорт схемы уже сделан, или нет. В основном, я хочу сделать что-то вроде этого псевдокода:
if(!_cfg.HasSchemaForType(typeof(MyType))
ExportSchema(typeof(MyType));
else
UpdateSchema(typeof(MyType));
, где две функции будут использовать внутренне SchemaExport
или SchemaUpdate
, соответственно.
РЕДАКТИРОВАТЬ: Ребята, я ценю ответ до сих пор, но они немного упускают суть. Я пытаюсь настроить способ приложения для добавления и удаления надстроек, которые могут потребовать внесения изменений в базу данных. Я не говорю о версии своего собственного кода или чего-то подобного (по крайней мере, не как его основная функция). Поэтому вопрос не в том, когда я разверну приложение, а в том, когда я добавляю или удаляю плагин. Был ли этот плагин (следовательно, проверка типа псевдокода) развернут ранее? Если это так, запустите обновление. Если нет, запустите экспорт. Имеет смысл?