Это процесс, который я разработал. Я думаю, что это довольно гладко.
Процесс выглядит примерно так: предположим, у вас есть база данных MyDb
- Внесите изменения в модель и отображение NH
- Запустите сценарий для удаления, затем заново создайте базу данных с именем MyDb_Next и выполните NH SchemaExport, чтобы записать в нее новую схему
- Используйте мой инструмент MigrationScriptGenerator для сравнения MyDb и MyDb_next. Это сгенерирует ваши сценарии изменений (или столько, сколько это возможно) путем сравнения схемы и создания операторов для добавления новых столбцов и т. Д. Сценарий сохраняется в файле xxxx - updatescript.sql.suggested в проекте VS
- Исправьте предложенный сценарий sql, если необходимо (он требует вмешательства человека, когда он обнаруживает изменения, которые могут потерять данные), и переименуйте в .sql (чтобы его можно было найти на следующем шаге)
- Событие после сборки в проекте, содержащем сценарии sql, запускает мой инструмент simplescriptrunner это применяет сценарий sql к MyDb, обновляя его
Вы просто повторяете этот процесс всякий раз, когда меняете свои сущности. Я обычно храню свои SQL-скрипты внутри .csproj, и у меня есть событие после сборки, которое запускает simplescriptrunner. Таким образом, любой другой разработчик, который выполняет обновление и перестройку, будет иметь самую последнюю версию БД, созданную на их компьютере из проверенных пронумерованных сценариев.
MigrationScriptGenerator использует OpenDBDiff (инструмент с открытым исходным кодом, похожий на Red Gate SQL Compare) для генерации скриптов. Это может оказаться полезным, если вы хотите создавать сценарии самостоятельно.
PS эти инструменты работают только с SQL Server - извините!