如何将PostgreSQL项目/脚本纳入Azure DevOps进行管理?
替代SQL Server为PostgreSQL后的Visual Studio项目与Azure DevOps管理方案
Visual Studio中管理PostgreSQL数据库的可行方案
方案1:用EF Core迁移(推荐适配.NET应用)
- 在你的.NET项目里安装
Npgsql.EntityFrameworkCore.PostgreSQL包 - 要么用
Scaffold-DbContext命令从现有PostgreSQL库生成实体模型,要么手动写实体类定义表结构 - 每次改结构时,用
Add-Migration生成迁移文件,这些文件会存在项目里,和代码一起做版本控制 - 本地测试时用
Update-Database把变更同步到数据库
方案2:第三方Visual Studio扩展
- 去Visual Studio Marketplace搜「PostgreSQL Database Project」这类扩展,安装后就能像SQL Server数据库项目一样创建表、视图等对象
- 扩展支持生成变更脚本,直接通过工具部署到PostgreSQL库
Azure DevOps中的托管与变更管理
1. 项目文件托管
- 不管是EF Core的迁移项目,还是第三方扩展生成的SQL脚本,直接提交到Azure DevOps的Git仓库就行——可以和应用代码放同一个仓库,也可以单独建数据库仓库
- 平时用Git分支策略(比如main分支保护、PR审核)来管控变更提交,和管理应用代码逻辑一样
2. 自动化变更部署(CI/CD管道)
针对EF Core项目:
- 在Azure DevOps管道里加个.NET Core任务,执行
dotnet ef database update命令就行,注意把数据库连接串存成管道变量(建议用Azure Key Vault存敏感信息) - 简单的管道示例:
- task: DotNetCoreCLI@2 inputs: command: 'run' arguments: '--project YourDbProject.csproj -- "update"' workingDirectory: '$(System.DefaultWorkingDirectory)/YourDbProject' env: ConnectionStrings__Default: $(PostgreSQLConnStr)
针对纯SQL脚本:
- 管道里先装PostgreSQL客户端,然后用
psql命令执行脚本:psql -h $(DB_HOST) -U $(DB_USER) -d $(DB_NAME) -f ./scripts/your_change.sql - 用户名、密码这类敏感信息,用Azure DevOps变量组或者Key Vault管理,别硬写在脚本里
内容的提问来源于stack exchange,提问作者Johnny Zghaib
相关产品推荐
相关产品推荐

