EF7 代码优先 -> SSDT 包 -> 生产服务器部署

EF7 Code first -> SSDT package -> Production Server Deployments

我正在尝试围绕新的 ASP.NET 核心/EF7 应用程序设置持续交付流程。

我想使用 Code First EF7 生成和更新我的本地开发数据库,​​然后将更改获取到我的 SSDT 数据库项目中。从那里我计划使用 MSDeploy 和 dbSqlPackage Provider 来更新我的 Azure SQL prod db,当我将 webapp 部署到我的 Azure 应用程序服务时。 https://msdn.microsoft.com/en-us/library/hh550081(v=vs.103).aspx

另请注意,在我无意识地将数据库更新部署到生产环境之前,我将进行某种预生产部署步骤,在预生产系统上进行一些测试。

我的问题是 - 如何在我的本地开发箱上自动执行更新 SSDT 项目以反映我的本地开发数据库的步骤?我可以执行从数据库到 SSDT 项目的手动 SSDT 比较,这将更新 SSDT 项目 sql 文件。我正在查看 SQLProject.exe,但据我所知,它只会创建 dacpac 或发布到数据库。

有人知道自动执行此步骤的方法吗?

我认为考虑到您的设置,我会考虑 EF 迁移而不是 SSDT,特别是考虑到您使用的是 EF7 并且迁移像梅毒一样不像以前那样笨拙。

假设您不想进行 EF 迁移,没有简单的方法可以从已部署的数据库中自动生成 .sqlproj 和关联的 .sql 文件;但是如果你不关心数据库项目本身,那么使用 sqlpackage - 或者你自己在 DacFX 之上的代码 - 从你部署的数据库中生成一个 .dacpac,然后使用 that 作为您通过其他环境推广的人工制品。

至于管理预生产/生产隔离,有很多方法可以做到这一点,包括但不限于 VSTS 发布管理 - 它内置了部署到 Azure SQL 数据库的任务.