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

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

bri*_*lam 69

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

Database.SetInitializer<MyContext>(null);
Run Code Online (Sandbox Code Playgroud)

  • 对于大多数应用程序,上下文中的静态构造函数似乎运行良好. (4认同)
  • 完美,完全像我希望的那样工作.谢谢! (2认同)

Die*_*ira 15

适用于EF 4.3或更高版本

Database.SetInitializer<MLTServerWatcherContext>(null);
Run Code Online (Sandbox Code Playgroud)

或者如果使用旧版EF

modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
Run Code Online (Sandbox Code Playgroud)

(我知道他说他使用的是EF 4.3,但我觉得这个选项也很好用)