【问题标题】:How to deploy a code-first Entity Framework database using Azure Devops pipelines to SQL server如何使用 Azure Devops 管道将代码优先的实体框架数据库部署到 SQL 服务器
【发布时间】:2019-01-18 11:25:26
【问题描述】:

我们正在使用带有 Azure DevOps 的 Entity Framework 核心构建一个 ASP.net 应用程序,并使用 MSSQL server 2016 以 IIS 为目标。

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

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

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

所以:

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

【问题讨论】:

  • 我认为这在ServerFault 上更具主题性。
  • 我不知道:这是 devops 所以:是更多的开发还是更多的操作?就我而言,开发团队是负责管道的人。
  • DevOps 问题应该在软件工程上进行。但大多数人都在这个问题上提出疑问。

标签: azure-devops entity-framework-core asp.net-core-2.2


【解决方案1】:

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

1.创建数据库脚本

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

2。应用迁移

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

myDbContext.Database.Migrate();

这就是我的工作方式。

以前关于将 DB 发布到 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

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

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

$(System.ArtifactsDirectory)/_$(Build.DefinitionName)/drop/migrate.sql 

请参阅this article for setting up CI pipeline。 参考this article for setting up CD pipeline

【讨论】:

  • 感谢您的回答,但您显然没有正确阅读我的问题:我没有尝试部署到 SQL Azure,我正在尝试部署本地 SQL 服务器实例
  • SQL Azure 和本地实例之间唯一相关的区别是连接字符串的server 部分。所以上面提供的答案对你有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-21
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 2014-01-06
相关资源
最近更新 更多