Методы, которые я видел, поддерживающие инкрементные обновления, - все это что-то вроде поддержания набора «сценариев изменений». Для первоначальной установки вы можете восстановить известную «чистую» резервную копию в новую БД или использовать сценарий SQL или инструмент ORM для проецирования схемы в DMBS. NHibernate имеет возможность генерировать схему с учетом конфигурации сопоставления, и вы можете настроить это поведение из установщика.
После того, как БД установлена, вы должны обновляться постепенно. Как правило, это означает создание сценария для каждого изменения в БД и включение его в установочный пакет с «бегунком» (простой пакетный процесс), который будет прокручивать сценарии и выполнять их для БД. Если они зависят от порядка, убедитесь, что ваша файловая структура учитывает это (но обычно лучше объединить два сценария, когда один должен быть выполнен первым). Также убедитесь, что изменение не является «разрушительным»; например, добавление столбца в таблицу не может включать удаление и повторное создание таблицы, даже если в ней будет меньше кода. Изменение также должно быть повторяемым или неповторяющимся, поскольку вам, вероятно, придется включать один и тот же сценарий дважды. Это может означать отслеживание имен выполненных вами сценариев и / или то, что каждый сценарий обнаруживает, что внесенные в него изменения еще не были внесены до его выполнения.
Имейте в виду, что если вы используете представления, хранимые процедуры или функции SQL, их можно по желанию отбрасывать и создавать заново, не затрагивая данные.
Наконец, убедитесь, что все подключения к обновляемой БД закрыты или сброшены, прежде чем выполнять обновления, чтобы избежать непредсказуемого поведения.