2016-11-19 50 views
1

我想用数据库(在Azure上)为网站实现CI和CD。如何使用数据库SSDT c#VSTS EF6连续传输Azure

工具:

  • SSDT(项目数据库)
  • C#
  • VSTS(Visual Studio团队服务)
  • EF6(实体框架6)
  • Azure的SQL数据库

目标是一个完整的连续活动即使是在数据库(最难的部分)。 对于网站来说,使用VSTS的CD非常容易。但关于数据库,我无法找到一个明确的方法来进行。 所以一些读数我打算

  1. 使用SSDT来管理数据库。 VSTS构建,使用数据库projet的dacpac自身通过模式比较生成更新数据库。我只会写数据运动的sql脚本。
  2. 使用EF6和“反转POCO码第一发电机” link

100%持续交付,我甚至无法在数据库架构修改停止服务。

所以我读到数据库更新必须与以前的部署(运行网站的DAL)兼容。因此,所有数据库模式修改将分两步进行,分两次进行。只有当第一步交付时才能进行第二次交付。

所以规则应该是

  1. 重命名表是不允许
  2. 重命名字段不允许
  3. 在SSDT添加列 1步骤
    • 添加列使用默认值
    • 将实体类别添加属性 2步骤
    • 在数据库上
    • 删除缺省值
  4. 删除列 1步骤
    • 上实体删除列
    • 通过SSDT 2步骤添加默认值
    • 通过SSDT
  5. 删除列

我很漂亮,我正在重新发明轮子,但我找不到完整的教程。 我在路上好吗?微软世界中有没有解决方案?我准备学习。谢谢

+0

好问题,我试图找出自己的这一个。该解决方案似乎涉及在部署期间镜像数据库并执行故障切换到镜像,然后故障恢复到升级的数据库并让新的模式更改复制。 https://docs.microsoft.com/en-us/sql/relational-databases/replication/transactional/peer-to-peer-transactional-replication – s3raph86

+1

@ s3raph86选中此:https://dzone.com/articles/zero -downtime-deployment-with-a-database-1 – Julian50

回答

0

您可以通过Azure SQL数据库部署步骤/任务将数据库部署到Azure。此外,您可以通过VSTS Build或release将应用程序部署到Azure。

例如:

  1. 添加Azure Resource Manager
  2. 您VSTS创建构建定义
  3. 将Visual Studio生成步骤建立数据库项目,它会产生dacpac文件。
  4. 添加Azure的SQL数据库部署步骤部署数据库通过dacpac文件天青(步骤3)
  5. 将Visual Studio生成步骤构建应用程序的项目
  6. (可选)添加Azure的应用服务部署的步骤来部署应用程序(网络),如果需要。
  7. (可选)去引发和检查持续集成(CI)为每个签入

There是一篇相关的文章(跟进其工作流程,它使用Azure的经典,你可以使用Azure的队列中累积资源管理器)。

+0

是的,但是如何避免零停机数据库?我的问题的第二部分。 – Julian50

+0

@ Julian50您可以部署到新的数据库,然后更改配置文件以指向新的数据库。 –

相关问题