如何在Entity Framework 4.3中禁用模型兼容性检查?

时间:2012-05-16 17:02:18

标签: c# .net entity-framework entity-framework-4.3

我正在使用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:我知道这种情况可能会引发有关为什么我需要这样做的问题;我知道这远非理想,但请放心,这是一个我需要解决的问题,而且横向合作的选择有限。

2 个答案:

答案 0 :(得分:69)

将初始化程序设置为null将跳过模型兼容性检查。

Database.SetInitializer<MyContext>(null);

答案 1 :(得分:15)

对于EF 4.3或更高版本

Database.SetInitializer<MLTServerWatcherContext>(null);

或者如果使用旧版本的EF

modelBuilder.Conventions.Remove<IncludeMetadataConvention>();

(我知道他说他正在使用EF 4.3,但我认为显示这个选项也很好)