【问题标题】:Entity Framework 4.1 Disable Model Compatibility CheckEntity Framework 4.1 禁用模型兼容性检查
【发布时间】:2011-05-23 18:19:07
【问题描述】:

我需要使用 '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 时,应该使用现有的表......

EDIT2: This 是一个可行的解决方案。当数据库以前不存在时,一切正常。但我无法选择删除/创建数据库。

【问题讨论】:

    标签: c# entity-framework ef-code-first entity-framework-4.1


    【解决方案1】:

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

    【讨论】:

    • 那行不通。如果没有任何 DbSet,我无法创建从 DbContext 派生的包装类。这样做会在执行基类 (DbContext) 的构造函数时导致异常。我可以创建两个单独的 DbContext 类,但这不是解决方案。
    • 很抱歉,这不是问题所在。我已经更新了我的初始帖子。
    猜你喜欢
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2011-08-15
    • 2011-12-04
    • 1970-01-01
    相关资源
    最近更新 更多