Вместо автоматического обновления базы данных сгенерируйте sql-скрипт с fluent n-hibernate для производственной среды
-
24-12-2019 - |
Вопрос
Я просмотрел различную документацию, хотя и не нашел ничего, что касалось бы этого.Я рассматриваю возможность использования fluentmigrator для будущих проектов, хотя для промежуточных / производственных практик необходимо выполнять обновления схемы через администратора базы данных.Мне разрешено делать то, что я хочу, для других сред, таких как тестирование, разработка и локальная.
Назначение инструмента полностью разрушается, если мне все равно приходится писать сценарии для внесения изменений.Однако мне пришло в голову, а что, если я этого не сделаю?Итак, мой вопрос заключается в следующем:Возможно ли, чтобы fluent migrate выдавал sql-скрипт в файл вместо фактического запуска транзакции?
В своем эксперименте я создал консольное приложение, которое использует ту же сборку DAL, что и основной проект, и использует логику переноса, так что всякий раз, когда я запускаю консольное приложение, оно обновляет базу данных с нуля или из ближайшей точки, в зависимости от моего выбора.Мы используем TeamCity, поэтому подумали, что было бы здорово, если бы он запустил приложение и поместил скрипт (как артефакт) в папку в качестве шага в процессе сборки для нашего администратора базы данных в средах, где обновление схемы самостоятельно было бы воспринято неодобрительно.
Решение
Тот Самый Бегун командной строки FluentMigrator будет генерировать SQL-скрипты, без применения изменений к базе данных, если вы используете:
--preview=true
--output=true
--outputFilename=output1.sql
И, если вы установите FluentMigrator.Набор инструментов в дополнение к Упаковка FluentMigrator, у вас будет доступ к исполнителю командной строки из выходного каталога сборки проекта миграции (Migrate.exe
).
Примечание: Сгенерированные скрипты будут содержать вставки в таблицу версий FluentMigrator.
Другие советы
After reading Command Line Runner Options I'd use --verbose=true to output the sql script and --output to save it to a file. There seems to be no 'dry run' option however - you'll need to run the migration in some preproduction environment to obtain the script.
Give it a shot as I've admittedly never tried it.