#entity-framework #visual-studio-2015 #sql-server-data-tools #continuous-deployment
#entity-framework #visual-studio-2015 #sql-server-data-tools #непрерывное развертывание
Вопрос:
Я пытаюсь настроить непрерывный поток доставки вокруг нового ASP.NET Приложение Core / EF7.
Я хотел бы использовать Code First EF7 для создания и обновления моей локальной базы данных разработчиков, а затем внести изменения в мой проект базы данных SSDT. Оттуда я планирую использовать MSDeploy с поставщиком пакетов dbSqlPackage для обновления моей базы данных Azure SQL prod с любыми изменениями при развертывании веб-приложения в моей службе приложений Azure. https://msdn.microsoft.com/en-us/library/hh550081 (v= против 103).aspx
Также обратите внимание, что у меня будет какой-то этап предварительного развертывания, на котором я проведу некоторое тестирование в системе предварительной подготовки, прежде чем бездумно развертывать обновления БД в рабочей среде.
Мой вопрос — как мне локально в моем devbox автоматизировать этап, на котором я обновляю проект SSDT, чтобы отразить мою локальную базу данных разработчиков? Я могу выполнить ручное сравнение SSDT из базы данных с проектом SSDT, и это обновит SQL-файлы проекта SSDT. Я смотрел на SQLProject.exe , но из того, что я вижу, он будет создавать только dacpac или публиковать в базе данных.
Кто-нибудь знает способ автоматизировать этот шаг?
Ответ №1:
Я думаю, что, учитывая ваши настройки, я бы рассматривал миграции EF, а не SSDT, особенно учитывая, что вы используете EF7, а миграции, как и сифилис, не такие неудобные, как раньше.
Предполагая, что вы не хотите выполнять миграцию EF, нет простого способа автоматизировать генерацию a .sqlproj
и связанных .sql
файлов из развернутой базы данных; но если вас не волнует сам проект базы данных, не так уж сложно использовать sqlpackage — или ваш собственный код поверх DacFx — длясоздайте файл a .dacpac
из развернутой базы данных, а затем используйте его в качестве артефакта, который вы продвигаете в других средах.
Что касается управления сегрегацией pre-prod / prod, существует множество способов сделать это, включая, помимо прочего, управление выпуском VSTS, в котором есть встроенные задачи для развертывания в Azure SQL DB.
Комментарии:
1. Я пришел к тому же выводу — в долгосрочной перспективе используйте инструментарий SqlPackage для создания dacpac, а затем проверьте это в Sourcecontrol и не беспокойтесь о проекте SSDT. И если при применении DACPAC возникают проблемы, вернитесь в EF и исправьте это там в конфигурации или, может быть, в миграциях (некрасиво). Хотя на данный момент, и просто для того, чтобы следить за базой данных, я буду вручную поддерживать промежуточный шаг SSDT.