EF backward compatible DB migrations

独自空忆成欢 提交于 2019-12-10 13:56:03

问题


I'm trying to figure out how to implement the following deployment scenario using EF code-first and migrations. The idea is that I would like to upgrade the DB with backward compatible schema changes (e.g.: add a column) and test that everything still works. It is inspired by green/blue deployment but it's not entirely following that pattern. The reasoning behind this is in following this process:

  1. Upgrade database (EF migration)
  2. Test website
  3. Update website code
  4. If something goes wrong, revert to the previous website code

The problem I will certainly face is that at step 2 (and 4) I will surely get an error from EF about the Model being changed, although all the DB changes are compatible with the existing code...

I know that a solution would be to migrate "Down" the database to the previous version (or even do a DB backup), but it may happen that some migrations are really complex and the "Down" part may be broken or simply poorly coded.

So my question is: is there a way to avoid EF checking the Model or eventually be aware that the changes are backward compatible?


回答1:


Setting the dbinitializer to null will drop the compability check, e.g.

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; }
}

Also suggested here



来源:https://stackoverflow.com/questions/26914395/ef-backward-compatible-db-migrations

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!