我正在尝试使用EF代码优先和迁移来弄清楚如何实现以下部署方案。 我的想法是,我想通过向后兼容的架构更改来升级数据库(例如:添加一列)并测试一切仍然有效。它的灵感来自绿色/蓝色部署,但并不完全遵循这种模式。这背后的原因是遵循这个过程:
我肯定会面临的问题是,在第2步(和第4步),我肯定会收到EF关于模型被更改的错误,尽管所有数据库更改都与现有代码兼容...
我知道解决方案是将数据库“向下”迁移到以前的版本(甚至进行数据库备份),但可能会发生某些迁移非常复杂且“向下”部分可能被破坏或编码很差。
所以我的问题是:有没有办法避免EF检查模型或最终意识到这些更改是向后兼容的?
答案 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