Я ищу фреймворк миграции, который будет работать с существующим проектом, который использует .NetTiers, более старую ORM, которая требует CodeSmith для генерации кода доступа к данным.
У нас есть некоторый опыт работы с разворотом, и мы успешно его применяем. Мы также можем автоматически развертывать изменения схемы при запуске развертываний из Octopus Deploy. Довольно просто, поскольку это просто набор сценариев SQL.
Я был заинтересован в переходе на FluentMigrator. Мне нравится FM DSL, и я нашел этот вопрос SO весьма полезным, однако есть несколько вещи, которые я не грок:
- Как правильно импортировать существующую схему базы данных [*]?
- Как правильно развертывать миграции в производственной среде [**]?
[*] Я предполагаю, что я создаю один сценарий с помощью инструментов SQL Server и использую ExecuteEmbeddedSql в качестве начальной миграции. Это правильно?
[**] Существует три основных способа запуска миграции (командная строка, средство запуска NAnt, средство запуска MSBuild). Им потребуется доступ к базе данных, чтобы они могли работать. Представьте, что мы хотим развернуть это в среде PROD. У разработчиков и сервера сборки нет доступа к этой среде. Как вы справляетесь с этими бегунами в этой среде?
Наш обычный процесс развертывания заключается в создании коллекции сценариев SQL, которые необходимо развернуть как часть развертывания. Операции запускают их как часть развертывания, либо автоматически как часть процесса развертывания Octopus (PowerShell), либо запускаются вручную, если развертывание выполняется за пределами Octopus).
Одна из проблем, с которыми мы сталкиваемся в этом конкретном проекте, - это .NetTiers. Это означает, что мы должны запустить генерацию кода CodeSmith с использованием .NetTiers для создания уровня доступа к данным, прежде чем мы сможем кодировать эти сущности и службы данных. Следовательно, наш рабочий процесс должен быть следующим:
- Запись миграции
- Запустите миграцию для обновления базы данных (выберите конкретную базу данных .NetTiers)
- Запустите .NetTiers для конкретной базы данных .NetTiers (центральный сервер сборки)
- Код для новых созданных .NetTiers сущностей, полей базы данных и т. Д.
Я бы хотел сбросить .NetTiers, но, к сожалению, рефакторинг в настоящее время не является жизнеспособным вариантом.