40

我正在使用 EF 4.3 并且有一个需要与另一个库使用 EF Code First 4.3 生成的数据库对话的上下文。上下文抛出异常说明

自创建数据库以来,支持“上下文”上下文的模型已更改。考虑使用 Code First 迁移来更新数据库

在 EF 4.1 中,这可以通过IncludeMetadataConvention从模型构建器中删除来禁用。但是,在 4.3 中,此约定已被弃用,不再有效。

如何让 EF 4.3 上下文与由不同上下文构建的 EF 4.3 生成的数据库对话?我发现的唯一选择(远非理想)是删除元数据表,从而导致两个上下文都假定数据库不是由 EF 构建的。

PS:我知道这种情况可能会引发我为什么需要这样做的问题;我知道这远非理想,但请放心,这是我需要解决的问题,并且横向处理的选择有限。

4

2 回答 2

70

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

Database.SetInitializer<MyContext>(null);
于 2012-05-16T18:06:56.090 回答
15

对于 EF 4.3 或更高版本

Database.SetInitializer<MLTServerWatcherContext>(null);

或者如果使用旧版本的 EF

modelBuilder.Conventions.Remove<IncludeMetadataConvention>();

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

于 2012-11-06T12:28:31.233 回答