如何使用 Azure Devops 管道将代码优先的实体框架数据库部署到 SQL 服务器

Ste*_*ane 7 entity-framework-core azure-devops asp.net-core-2.2

我们正在使用 Entity Framework core 和 Azure DevOps 构建一个 ASP.net 应用程序,并使用 MSSQL server 2016 定位 IIS。

我们的测试服务器是包含 IIS 和 SQL 服务器实例的本地 Windows 2016 机器。

我已经成功编写了一个部署工作流,可以在代码本身的测试服务器上进行持续部署,但我找不到任何部署数据库的方法。第一个版本的目标是 asp.net core 2.0,所以我可以使用命令行在 IIS 之外启动应用程序并触发数据库更新,但是当我们切换到 2.2 和进程内 IIS 部署时,我们显然失去了这种能力。

我想将数据库的部署集成到部署管道中的服务器,包括数据库创建,但我找不到任何使用 Azure Devops 的方法:我可以针对 Azure SQL 实例,但是,除非我我错过了一些东西,而不是本地的。

所以:

  • 如何在未安装 SDK 的机器上使用 ASP.NET Core 2.2 进程内应用程序手动创建和填充数据库?
  • 我需要向 Azure DevOps 管道添加什么才能将数据库部署到本地 MSSQL 服务器数据库

Man*_*ari 2

编辑:为了在本地部署,我遵循以下两个步骤:

1. 创建数据库脚本

您可以创建普通的创建数据库脚本,该脚本在本地数据库实例中创建数据库。

2. 应用迁移

创建简单的控制台应用程序,该应用程序首先运行创建数据库脚本,然后应用迁移。

myDbContext.Database.Migrate();
Run Code Online (Sandbox Code Playgroud)

我就是这样让它发挥作用的。

以前有关将数据库发布到 Azure 的内容:

您需要“Azure SQL 发布”任务。先决条件是您应该已经创建了 Azure SQL 数据库。

脚步:

步骤1:在构建管道中生成迁移脚本的命令

创建命令行任务来生成迁移脚本:

dotnet ef migrations script -i -o %BUILD_ARTIFACTSTAGINGDIRECTORY%\migrate.sql --project EfMigrationApp.Database\EfMigrationApp.Database.csproj --startup-project EfMigrationApp\EfMigrationApp.csproj -i -o %BUILD_ARTIFACTSTAGINGDIRECTORY%\migrate.sql
Run Code Online (Sandbox Code Playgroud)

步骤 2:在发布管道中发布 Azure SQL

操作:发布类型:SQL 脚本文件 Sql 脚本应如下所示:

$(System.ArtifactsDirectory)/_$(Build.DefinitionName)/drop/migrate.sql 
Run Code Online (Sandbox Code Playgroud)

请参阅本文以了解如何设置 CI 管道。请参阅本文以了解如何设置 CD 管道

  • SQL Azure 和本地实例之间的唯一相关区别是连接字符串的“服务器”部分。因此,上面提供的答案将适合您。 (3认同)