Миграция Entity Framework Azure DevOps Выпуск конвейера - PullRequest
2 голосов
/ 15 октября 2019

Я пытаюсь запустить миграцию на конвейере выпуска DevOps Azure. Потому что я хочу запускать свои сценарии БД автоматически при каждом выпуске. Мой конвейер выпуска не имеет исходного кода, я только что скомпилировал DLL.

Когда я выполняю эту команду на локальном компьютере, она успешно выполняется. Как я могу преобразовать эту команду, чтобы я мог использовать ее с DLL.

dotnet ef database update --project MyEntityFrameworkProject --context MyDbContext --startup-project MyStartupProject

Ответы [ 2 ]

2 голосов
/ 15 октября 2019

Если вы не хотите включать свой исходный код в артефакты, вы можете использовать следующий скрипт:

set rootDir=$(System.DefaultWorkingDirectory)\WebApp\drop\WebApp.Web
set efPath=C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.entityframeworkcore.tools\2.1.1\tools\netcoreapp2.0\any\ef.dll
dotnet exec --depsfile "%rootDir%\WebApp.deps.json" --additionalprobingpath %USERPROFILE%\.nuget\packages --additionalprobingpath "C:\Program Files\dotnet\sdk\NuGetFallbackFolder" --runtimeconfig "%rootDir%\WebApp.runtimeconfig.json" "%efpath%" database update --verbose --prefix-output --assembly "%rootDir%\AssemblyContainingDbContext.dll" --startup-assembly "%rootDir%\AssemblyContainingStartup.dll" --working-dir "%rootDir%"

Оказывается, что вы можете обойтись недокументированной командой dotnet exec, как в следующем примере(при условии, что веб-приложение называется WebApp):

Обратите внимание, что рабочий каталог (скрытый в разделе «Дополнительно») этой задачи командной строки запуска должен быть указан в том месте, где находятся артефакты (rootDir выше).

Другой вариант - установить расширение Инструменты сборки и выпуска и использовать задачу «Развертывание миграции ядра Entity Framework из DLL».

Более подробную информацию можно получить здесь здесь и здесь .

0 голосов
/ 17 октября 2019

Другой подход заключается в создании сценария миграции (обычного сценария sql) во время сборки конвейера и включении этого сценария в ваш артефакт. Для этого выполните следующую команду:

dotnet ef migrations script --output $(build.artifactstagingdirectory)\sql\migrations.sql -i

Примечание * Флаг -i, который позволяет запускать этот сценарий несколько раз в одной и той же базе данных

Если у вас есть этот скрипт как часть вашего артефакта, вы можете запустить его в базе данных в вашем конвейере выпуска, используя встроенную задачу Azure SQL Database Deployment.

Проверьте эту ссылку для получения дополнительной информации

...