Fer*_* R. 5 postgresql azure azure-devops azure-pipelines ef-core-3.1
在 Azure DevOps 中,我用来更新SQL Server数据库的方式是使用 Entity Framework Core,使用两个任务:
问题是,现在我使用PostgreSQL数据库,我找不到一种简单而干净的方法来以相同的方式更新数据库。我看到MySQL 的另一个任务与我在 SQL Server 上的发布管道任务完全相同,但 PostgreSQL 没有任何任务。
所以我认为我基本上可以dotnet ef update database在管道中执行(设置适当的选项),但我想知道是否真的有一种方法可以像我以前那样顺利地更新数据库。
我终于得修好它了。
我发现有两种解决方案可以解决该问题。
这将是 YAML(如果您想在发布管道之外使用它):
- task: DotNetCoreCLI@2
displayName: 'dotnet custom'
inputs:
command: custom
custom: tool
arguments: 'install --global dotnet-ef --version 3.1.4 --ignore-failed-sources'
Run Code Online (Sandbox Code Playgroud)
dotnet ef database update -c <DBCONTEXT> -p <PROJECT> -s <STARTUP_PROJECT> -v --no-build
Run Code Online (Sandbox Code Playgroud)
如果您的项目中有多个上下文(有时其他 DbContext 可能来自一些块包),您只需添加标志-c即可。
请注意,我添加了标志--no-build,因为我已经在构建管道中构建了项目以遵循良好实践。
但是,如果我必须使用SQL Server或MySQL,我会使用迁移脚本,因为该过程要容易得多(您只需要生成一个.sql脚本,然后它是部署迁移所需的唯一文件)。