我想运行蓝绿色部署;但是,EF迁移似乎阻止了这一点。如果将版本1部署到蓝色插槽,创建EF迁移并将版本2部署到绿色插槽,则将发生以下两种情况之一。
场景1:
我将运行迁移,并且版本1将停止工作。这违背了在绿色插槽中测试版本2的目的,而让我们的用户在蓝色插槽中运行版本1的目的。
方案2:
在从蓝色插槽切换到绿色插槽之前,我不会运行迁移。这意味着在允许用户访问版本2之前,我无法测试绿色插槽(版本2)。
处理此问题的标准/最佳做法是什么?
对于这样的工作流程,您需要分两步进行模式更改。
第一步是以与v1兼容的方式添加v2所需的所有内容。任何新列都将是可选的,或者,如果可能的话,请使用默认约束或触发器基于v1值填充它。
v1停用后,您可以通过删除未使用的列并设置为必填列来清理架构。
NuGet.org已经通过EF迁移成功地使用了此工作流程。