В NHibernate вы можете использовать класс SchemaUpdate для внесения аддитивных изменений в вашу схему. (Аддитивные изменения будут включать новые таблицы, новые столбцы и т. Д., Но не удаляются.) SchemaUpdate предназначен для целей разработки и не предназначен для запуска в производстве. Я настоятельно рекомендую проверить средства миграции SQL, такие как Tarantino, dbdeploy.net, RikMigrations или аналогичные.
Инструменты миграции доступны в двух вариантах - на основе сценариев SQL (Tarantino и dbdeploy.net) и на основе кода (миграции в стиле RikMigrations и Rails). Используя инструмент миграции на основе кода, вы пишете свои миграции, используя код, написанный на C #, VB, Ruby, ... Инструменты на основе сценариев SQL принимают упорядоченный набор сценариев SQL. В любом случае инструмент миграции запускает любые миграции с вашей базой данных, которые ранее не выполнялись. (Как правило, в таблице миграции перечислены скрипты, которые были запущены и позволяет инструменту выяснить, какие еще нужно запустить.) Сценарии SQL генерируются с помощью:
// SchemaUpdate.Execute(bool script, bool doUpdate)
new SchemaUpdate(cfg).Execute(true, false);
и затем отредактировано по вкусу. Или вы можете сгенерировать новую схему с помощью SchemaExport от NHibernate и с помощью инструмента сравнения схем, такого как Microsoft Visual Studio для профессионалов баз данных Ultimate Now With Extra Mayo Edition (или DataDude) или RedGate SQL Compare. Вам нужно было бы написать сценарии преобразования вручную, поскольку инструмент миграции SQL в общем случае не знает, что столбец Foo char (1), заполненный T / F, должен быть преобразован в этот столбец битовых столбцов.
Лично я предпочитаю инструменты миграции на основе сценариев SQL, поскольку я могу генерировать различия в схемах с помощью инструмента и затем редактировать по вкусу, а не выполнять ручную прокрутку всей миграции с использованием C # или аналогичного языка.