我在使用devops将数据播种到thre数据库时遇到麻烦。我有一个带有以下构建步骤的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'
这很好用-在数据库中创建了架构。
然后我使用连接字符串创建App Service,并且App Service连接到数据库就很好了。
我似乎无法工作的一点是数据播种。我在Google上搜索了很多,有很多文章谈论创建迁移和创建SQL脚本,然后在Devops中运行该脚本。关于在Devops之外播种数据的讨论很多,但我苦苦挣扎的一点是如何使它在Devops中播种数据。我注意到的一件奇怪的事是,如果我重新运行构建/部署YAML,它就可以播种数据而无需我告诉它。所以,我想有两个问题:
是在App Service启动期间在App Service代码中完成(或应该)进行数据播种的工作,还是应该在Devops的发布管道中鼓励这样做? (我不是App Service开发人员。开发人员表示,他认为这应该在App Startup上发生。并不是这样,我的想法是,如果他在代码中丢失了某些内容,也许我可以说“别担心,我可以开始将数据植入“ Devops”中。”
如果应该在Devops中完成,如何应该完成?我本以为“ dotnet ef数据库更新-p”应该可以做到,但是在发行管道中似乎不起作用。
非常感谢
答案 0 :(得分:0)
经过一些实验,我得到了答案。它不是很漂亮,但是可以。我不知道为什么开发者的种子无法正常工作,但是我可以像这样在Devops中强制使用它:
这似乎“迫使”播种。工作完成。