在Azure DevOps中,我用于更新 SQL Server 数据库的方法是使用Entity Framework Core,它执行以下两项任务:
问题是,既然我使用的是 PostgreSQL 数据库,我找不到一种简单明了的方式来更新数据库。我已经看到another task for MySQL的功能与我的发布管道任务与SQL Server的功能完全相同,但对于PostgreSQL没有任何作用。
所以我认为我基本上可以在管道中执行dotnet ef update database
(设置了正确的选项),但是我想知道是否真的有一种方法可以像以前一样平稳地更新数据库。 / p>
答案 0 :(得分:2)
我终于要修复它。
我发现有两种解决方案可以解决此问题。
这就是YAML(以防您要在发布管道之外使用它):
- task: DotNetCoreCLI@2
displayName: 'dotnet custom'
inputs:
command: custom
custom: tool
arguments: 'install --global dotnet-ef --version 3.1.4 --ignore-failed-sources'
dotnet ef database update -c <DBCONTEXT> -p <PROJECT> -s <STARTUP_PROJECT> -v --no-build
如果您的项目中有多个上下文(有时其他DbContext可能来自某些块包),则只需添加标志 -c 。
注意,我已经添加了标记-no-build ,因为我已经在构建管道中构建了该项目以遵循良好的做法。
但是,如果我必须使用 SQL Server 或 MySQL ,我将使用迁移脚本,因为此过程要容易得多(您只需要生成一个 .sql 脚本,那么它是部署迁移所需的唯一文件)。