我有两个共享相同后备数据库的环境(A和B),此数据库使用ASP.Net Identity 2.0框架,因此使用下面的EF。这两个环境可能在任何时候运行单独的代码版本 - B版本通常运行较旧的代码(即我将部署到A并在部署到B之前测试任何更改)。
当我向模型添加新属性并利用EF迁移时,新列将添加到基础数据库。此代码将首先部署到A,并将修改B正在使用的相同数据库。 B然后抛出有关在数据库表中找到的未知属性(列)的异常。
我有办法解决这个问题吗?基本上我希望不知道新列的代码“忽略”它 - 或者将它设置为默认值。
答案 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>