我在 Windows Azure 中有以下设置:
- 连接到自己的“测试”数据库的“测试”托管服务。
- 连接到自己的“生产”数据库的“生产”托管服务。
当构建在测试中得到验证并准备好投入生产时,我们在生产托管服务中启动“暂存”部署,并进行快速冒烟测试以确保新构建没有完全损坏。暂存实例使用将部署到生产环境的确切位进行部署,因此它与生产数据库通信。当登台成功时,我们点击“VIP 交换”按钮,构建就可以投入生产了。一切都很好。
当数据库模型发生变化时,问题就出现了。我的 Code First 迁移工作完美。我可以添加新的迁移,使用包管理器控制台在本地应用它们,然后在我推送新构建进行测试时生成 SQL 脚本来升级测试数据库。问题是,将 Code First 迁移与暂存/生产部署一起使用的最佳实践是什么?当我部署一个新的构建以进行模型更改时,它希望找到一个与其模型匹配的数据库。但是,如果我将模型更改应用于生产数据库,生产实例会抱怨,因为它的模型不匹配。
我刚刚跳过了分期烟雾测试。我上传到登台,然后更新生产数据库并几乎同时点击“VIP交换”按钮。然后在生产中进行冒烟测试。如果某些东西严重损坏,请“交换 VIP”并恢复数据库更改。
有没有更好的方法来做到这一点,还是差不多?
谢谢!