实体框架代码优先 - 具有两个版本代码的模型更改(模型更改前和模型更改后)

时间:2014-07-22 13:45:45

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

我有两个共享相同后备数据库的环境(A和B),此数据库使用ASP.Net Identity 2.0框架,因此使用下面的EF。这两个环境可能在任何时候运行单独的代码版本 - B版本通常运行较旧的代码(即我将部署到A并在部署到B之前测试任何更改)。

当我向模型添加新属性并利用EF迁移时,新列将添加到基础数据库。此代码将首先部署到A,并将修改B正在使用的相同数据库。 B然后抛出有关在数据库表中找到的未知属性(列)的异常。

我有办法解决这个问题吗?基本上我希望不知道新列的代码“忽略”它 - 或者将它设置为默认值。

1 个答案:

答案 0 :(得分:1)

您可以通过在上下文构造函数中设置null初始化来阻止实体框架检查模型是否与数据库匹配:

public class YourContext : DbContext
{
    public YourContext() : base("YourContextConnection")
    {
        Database.SetInitializer<YourContext>(null);
    }

    //Rest of context here

}

如果仅在B的web.config中禁用它,它也可能有效:

<entityFramework>
    <contexts>
        <context type="YourNamespace.YourContext, YourAssembly" disableDatabaseInitialization="true" />
    </contexts>
</entityFramework>