我正在使用EF 4.3并且有一个上下文需要与使用EF Code First 4.3的另一个库生成的数据库进行通信。上下文引发了一个异常陈述
支持'上下文'上下文的模型自从以来发生了变化 数据库已创建。考虑使用Code First Migrations进行更新 数据库
在EF 4.1中,可以通过从模型构建器中删除IncludeMetadataConvention
来禁用它。但是,在4.3中,该约定已被弃用,不再有效。
如何与由不同上下文构建的EF 4.3生成的数据库进行EF 4.3上下文对话?我发现的唯一选择(远非理想)是删除元数据表,从而导致两个上下文假设数据库不是由EF构建的。
PS:我知道这种情况可能会引发有关为什么我需要这样做的问题;我知道这远非理想,但请放心,这是一个我需要解决的问题,而且横向合作的选择有限。
答案 0 :(得分:69)
将初始化程序设置为null
将跳过模型兼容性检查。
Database.SetInitializer<MyContext>(null);
答案 1 :(得分:15)
对于EF 4.3或更高版本
Database.SetInitializer<MLTServerWatcherContext>(null);
或者如果使用旧版本的EF
modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
(我知道他说他正在使用EF 4.3,但我认为显示这个选项也很好)