我有以下安装在Windows Azure中的测试最佳实践:天青:在代码首先迁移登台环境
- A“测试”连接到自己的“测试”数据库托管服务。
- 连接到自己的“生产”数据库的“生产”托管服务。
当构建已通过测试验证并准备投入生产时,我们在生产托管服务中启动“暂存”部署,并执行快速烟测试以确保新构建不是完全破碎。临时实例部署的准确位将部署到生产环境中,所以它正在与生产数据库交谈。当升级受到祝福时,我们点击“VIP交换”按钮,并且构建在生产中进行。一切都很好。
数据库模型更改时会出现问题。我已经完成了Code First Migrations的工作。我可以添加新的迁移,使用包管理器控制台在本地应用它们,然后生成SQL脚本以在推送新版本进行测试时升级测试数据库。问题是,使用Code First Migrations和分段/生产部署的最佳做法是什么?当我使用模型更改部署新构建时,它希望找到与其模型相匹配的数据库。但是,如果我将模型更改应用到生产数据库,生产实例会抱怨,因为它的模型不匹配。
我刚刚跳过了分级烟雾测试。我上传到分段,然后更新生产数据库,几乎同时点击“VIP交换”按钮。然后对生产进行抽烟测试。如果某些事情被严重破坏,请“交换VIP”并恢复数据库更改。
有没有更好的方法来做到这一点,或者说是非常多的呢?
谢谢!
我有同样的问题,祝你好运,我能想到的,现在唯一的事情就是禁用自动“升级到最新的”,或扩大自己的DbMigrator如果有一些区分舞台和制作的方法。最好的办法是定位一个临时数据库,可以允许升级,然后当你交换另一个数据库时......但是因为当你交换时没有什么“事情发生”,我不知道应该如何发生。 – FRoZeN
这是真的破碎。分期和迁移不兼容。在交换之前,无法迁移和预热登台Web服务器。生产Web服务器在迁移应用后立即关闭。我会假设实体框架将能够处理渐进式更改(例如添加一个表)。看起来唯一的方法是使用单独的临时数据库。 –