我想用数据库(在Azure上)为网站实现CI和CD。如何使用数据库SSDT c#VSTS EF6连续传输Azure
工具:
- SSDT(项目数据库)
- C#
- VSTS(Visual Studio团队服务)
- EF6(实体框架6)
- Azure的SQL数据库
目标是一个完整的连续活动即使是在数据库(最难的部分)。 对于网站来说,使用VSTS的CD非常容易。但关于数据库,我无法找到一个明确的方法来进行。 所以一些读数我打算:
- 使用SSDT来管理数据库。 VSTS构建,使用数据库projet的dacpac自身通过模式比较生成更新数据库。我只会写数据运动的sql脚本。
- 使用EF6和“反转POCO码第一发电机” link
100%持续交付,我甚至无法在数据库架构修改停止服务。
所以我读到数据库更新必须与以前的部署(运行网站的DAL)兼容。因此,所有数据库模式修改将分两步进行,分两次进行。只有当第一步交付时才能进行第二次交付。
所以规则应该是
- 重命名表是不允许
- 重命名字段不允许
- 在SSDT添加列 1步骤
- 添加列使用默认值
- 将实体类别添加属性 2步骤 在数据库上
- 删除缺省值
- 删除列 1步骤
- 上实体删除列
- 通过SSDT 2步骤添加默认值
- 通过SSDT
删除列
我很漂亮,我正在重新发明轮子,但我找不到完整的教程。 我在路上好吗?微软世界中有没有解决方案?我准备学习。谢谢
好问题,我试图找出自己的这一个。该解决方案似乎涉及在部署期间镜像数据库并执行故障切换到镜像,然后故障恢复到升级的数据库并让新的模式更改复制。 https://docs.microsoft.com/en-us/sql/relational-databases/replication/transactional/peer-to-peer-transactional-replication – s3raph86
@ s3raph86选中此:https://dzone.com/articles/zero -downtime-deployment-with-a-database-1 – Julian50