2011-05-23 50 views
0

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

我收到以下错误信息:

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. 

是否有可能排除从该检查一个特殊的实体?

编辑: 我已经完成了Devart的建议。这个问题似乎不同于我第一次尝试。如果我让EF用我的CheckedContext创建一个新的数据库,这一切都可以正常工作。但我发现了上述错误信息,当我尝试使用我的NonCheckedContext至极应该利用现有的表...

EDIT2: This是一个可行的解决方案。一切正常,当数据库不存在之前。但是,对我来说,放弃/创建数据库是不行的。

回答

1

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

+0

这是行不通的。我无法创建一个从DbContext派生的包装类,而不包含任何DbSet <>。这样做会导致执行基类(DbContext)的构造函数时发生异常。我可以创建两个独立的DbContext类,但这不可能是解决方案。 – 0xbadf00d 2011-05-23 09:42:39

+0

我很抱歉,那不是问题所在。我已更新了我的初始帖子。 – 0xbadf00d 2011-05-23 10:05:52