EF向后兼容的数据库迁移

时间:2014-11-13 17:06:05

标签: c# asp.net-mvc entity-framework ef-migrations

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

  1. 升级数据库(EF迁移)
  2. 测试网站
  3. 更新网站代码
  4. 如果出现问题,请恢复上一个网站代码
  5. 我肯定会面临的问题是,在第2步(和第4步),我肯定会收到EF关于模型被更改的错误,尽管所有数据库更改都与现有代码兼容...

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

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

1 个答案:

答案 0 :(得分:4)

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

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

还建议here