实体框架4.1禁用模型兼容性检查

本文关键字:模型 兼容性 检查 框架 实体 | 更新日期: 2023-09-27 17:57:29

我需要使用一个"DropCreateDatabaseIfModelChanges"-Initializer类,因为如果它不存在,我想创建一个特殊的实体(表)。我的问题是,我的DbContext中还有另一个实体,它不应该是模型兼容性检查的一部分。

我收到以下错误消息:

Model compatibility cannot be checked because the EdmMetadata type was not inclu
ded in the model. Ensure that IncludeMetadataConvention has been added to the Db
ModelBuilder conventions.

有没有可能将特殊实体排除在这张支票之外?

编辑:我已经按照德瓦特的建议做了。这个问题似乎和我刚开始想的不一样。如果我让EF用CheckedContext创建一个新的数据库,一切都很好。但我收到了上面的错误消息,当我尝试使用我的NonCheckedContext时,它应该使用现有的表。。。

第2版:这是一个有效的解决方案。当数据库以前不存在时,一切都很好。但对我来说,删除/创建数据库是没有选择的。

实体框架4.1禁用模型兼容性检查

一个可能的解决方案:创建一个从DbContext继承的上下文类,然后创建两个从基上下文继承的独立子上下文-CheckedContext和NonCheckedContext,并相应地设置数据库初始化策略
请注意,您应该首先访问CheckedContext,以便它激发所有的检查。