Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用数据库SSDT c#VSTS EF6 Azure连续交付_C#_Database_Azure Devops_Sql Server Data Tools_Continuous Delivery - Fatal编程技术网

如何使用数据库SSDT c#VSTS EF6 Azure连续交付

如何使用数据库SSDT c#VSTS EF6 Azure连续交付,c#,database,azure-devops,sql-server-data-tools,continuous-delivery,C#,Database,Azure Devops,Sql Server Data Tools,Continuous Delivery,我想为带有数据库的网站(在Azure上)实现CI和CD 工具: SSDT(项目数据库) C# VSTS(Visual studio团队服务) EF6(实体框架6) Azure SQL数据库 目标是即使使用数据库(最难的部分),也能实现完整的连续交付。 对于网站而言,使用VST制作CD非常简单。但是关于数据库,我找不到一个清晰的方法来处理。 因此,通过一些阅读资料,我计划: 使用SSDT管理数据库。VSTS构建时,使用数据库项目的dacpac通过模式比较自行生成更新数据库。我将为数据运动编写s

我想为带有数据库的网站(在Azure上)实现CI和CD

工具:

  • SSDT(项目数据库)
  • C#
  • VSTS(Visual studio团队服务)
  • EF6(实体框架6)
  • Azure SQL数据库
目标是即使使用数据库(最难的部分),也能实现完整的连续交付。 对于网站而言,使用VST制作CD非常简单。但是关于数据库,我找不到一个清晰的方法来处理。 因此,通过一些阅读资料,我计划

  • 使用SSDT管理数据库。VSTS构建时,使用数据库项目的dacpac通过模式比较自行生成更新数据库。我将为数据运动编写sql脚本
  • 使用EF6和“反向POCO代码第一生成器”
  • 为了100%连续交付,我不能停止服务,即使在数据库模式修改期间也是如此

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

    所以规则应该是

  • 不允许重命名表
  • 不允许重命名列
  • 添加列 一步
    • 使用默认值在SSDT中添加列
    • 将属性添加到实体类 2步
    • 删除数据库上的默认值
  • 删除列 一步
    • 删除实体上的列
    • 通过SSDT添加默认值 2步
    • 通过SSDT移除柱
  • 我很确定,我正在重新发明轮子,但我找不到完整的教程。
    我走的好吗?microsoft world中是否有现成的解决方案?我准备好学习了。谢谢

    您可以通过构建或发布中的azure SQL数据库部署步骤/任务将数据库部署到azure。此外,您还可以通过VSTS构建或发布将应用部署到Azure

    例如:

  • 添加
  • 在VST上创建生成定义
  • 添加VisualStudioBuild步骤来构建数据库项目,它将生成dacpac文件
  • 添加Azure SQL数据库部署步骤,通过dacpac文件将数据库部署到Azure(步骤3)
  • 添加Visual Studio生成步骤以生成应用程序项目
  • (可选)如果需要,添加Azure应用程序服务部署步骤以部署应用程序(web)
  • (可选)转到触发器并检查连续集成(CI)以为每个签入生成队列

  • 是一篇相关文章(跟进其工作流,它使用Azure Classic,您可以使用Azure资源管理器)。

    您可以通过构建或发布中的Azure SQL数据库部署步骤/任务将数据库部署到Azure。此外,您还可以通过VSTS构建或发布将应用部署到Azure

    例如:

  • 添加
  • 在VST上创建生成定义
  • 添加VisualStudioBuild步骤来构建数据库项目,它将生成dacpac文件
  • 添加Azure SQL数据库部署步骤,通过dacpac文件将数据库部署到Azure(步骤3)
  • 添加Visual Studio生成步骤以生成应用程序项目
  • (可选)如果需要,添加Azure应用程序服务部署步骤以部署应用程序(web)
  • (可选)转到触发器并检查连续集成(CI)以为每个签入生成队列

  • 是一篇相关文章(跟进其工作流,它使用Azure Classic,您可以使用Azure资源管理器)。

    是的,但如何避免数据库零停机?我问题的第二部分。@Julian50您可以部署到新数据库,然后更改配置文件以指向新数据库。是的,但如何避免数据库零停机?我问题的第二部分。@Julian50您可以部署到一个新的数据库,然后更改配置文件以指向新的数据库。好问题,我正在尝试自己解决这个问题。解决方案似乎包括镜像数据库,并在部署期间执行镜像故障切换,然后故障恢复到升级的数据库,并让新的架构更改复制到镜像@S386检查这个:好问题,我正试着自己解决这个问题。解决方案似乎包括镜像数据库,并在部署期间执行镜像故障切换,然后故障恢复到升级的数据库,并让新的架构更改复制到镜像@S386请检查以下内容: