我已经在考虑了很长时间,幸运的是,我还没有需要这个答案,但我仍然想知道最佳方法。假设我们有以下设置:
- Web API 建立在 Entity Framework(代码先行)和 Microsoft Azure 之上。
- 启用了自动迁移(自动迁移到最新版本)
- 我们有两个插槽 - Production 和 Staging(都有单独的数据库)
让我们遵循以下场景:
- 我们将新版本部署到staging slot(验证一切正常)
- 暂存数据库自动迁移到最新版本
- 我们将staging实例交换到production插槽
- 迁移在生产数据库上运行
- 由于某种原因,我们意识到需要降级并回到以前的版本。
好的,现在来了我的所有问题:
- 如何将数据库降级到以前的版本 - (因为我认为连接到生产环境并从程序包管理器控制台运行降级命令不是一个好主意)。
- 工作流程是否如下:使用当前实例降级数据库(这将导致 Web 应用程序短暂停机,因为迁移将不匹配),然后将旧的暂存插槽实例交换到生产插槽中?
我已经苦苦思考了一段时间,因为我无法找到任何理想的方法来做到这一点 - 因为当迁移不匹配时,实体框架会出现问题。