У меня проблемы с отправкой данных в базу данных через devops. У меня есть YAML со следующим шагом сборки (я удалил несущественные шаги):
- task: CmdLine@2
inputs:
script: |
dotnet tool install --global dotnet-ef --version 3.0
dotnet tool restore
dotnet ef migrations script -p $(Build.SourcesDirectory)/$(My.SQLProject)/$(My.SQLProject).csproj -o $(Build.ArtifactStagingDirectory)/migrations/script.sql -i
- task: PublishBuildArtifacts@1
Это просто прекрасно создает сценарий миграции SQL и выводит его на экран.
Во время выпуска я создаю базу данных, используя задачу развертывания ARM, затем запускаю сценарий SQL:
- task: SqlAzureDacpacDeployment@1
inputs:
azureSubscription: 'my-sub'
ServerName: 'my-server.database.windows.net'
DatabaseName: 'my-db'
SqlUsername: 'my-sqluser'
SqlPassword: 'my-password'
deployType: SqlTask
SqlFile: '$(Pipeline.Workspace)/drop/migrations/script.sql'
Это работает нормально - схема в БД создается.
Затем я создаю Служба приложений со строкой подключения и Служба приложений прекрасно подключаются к БД.
Бит, который я не могу заставить работать, - это заполнение данных. Я много гуглил и есть много статей, в которых рассказывается о создании миграций и создании сценариев SQL, а затем о запуске сценариев в Devops. И есть много того, что говорит о заполнении данных за пределами Devops, но я сталкиваюсь с тем, как заставить их заполнять данные в Devops. Одна странная вещь, которую я заметил, заключается в том, что, если я перезапущу сборку / развертывание YAML, он затем заполняет данные, и мне не нужно об этом говорить. Итак, я предполагаю, что есть два вопроса:
Является ли отправка данных чем-то, что ДОЛЖНО (или ДОЛЖНО) быть сделано в коде службы приложения во время запуска службы приложения, или это должно быть спровоцировал во время релиза конвейер в Devops? (Я не разработчик службы приложений. Разработчик говорит, что он думает, что это должно произойти при запуске приложения. Я не думаю, что если ему что-то не хватает в его коде, возможно, я могу сказать: «Не волнуйтесь, Я могу начать заполнять данные в Devops ".
Если это должно быть сделано в Devops, Как это должно быть сделано? Я бы подумал, что" do tnet ef update базы данных -p "должно это сделать, но, похоже, это не работает в конвейере выпуска.
Большое спасибо