EF向后兼容的数据库迁移

我正在尝试使用EF代码优先和迁移来弄清楚如何实现以下部署方案。 我的想法是,我想用向后兼容的架构更改升级数据库(例如:添加一列)并测试一切仍然有效。 它的灵感来自绿色/蓝色部署,但并不完全遵循这种模式。 这背后的原因是遵循这个过程:

  1. 升级数据库(EF迁移)
  2. 测试网站
  3. 更新网站代码
  4. 如果出现问题,请恢复到之前的网站代码

我肯定会面临的问题是,在第2步(和第4步),我肯定会从EF获得有关模型被更改的错误,尽管所有数据库更改都与现有代码兼容…

我知道解决方案是将数据库“向下”迁移到以前的版本(甚至进行数据库备份),但可能会发生某些迁移非常复杂且“向下”部分可能被破坏或编码很差的情况。

所以我的问题是: 有没有办法避免EF检查模型或最终意识到更改是向后兼容的?

将dbinitializer设置为null将丢弃兼容性检查,例如

public class MyDBContext: DbContext { public MyDBContext() : base("myConnString") { //Disable initializer Database.SetInitializer(null); } public DbSet As { get; set; } public DbSet Bs { get; set; } } 

这里也建议