Entity Framework 4.1 禁用模型兼容性检查

发布于 2024-11-08 18:23:13 字数 759 浏览 0 评论 0原文

我需要使用“DropCreateDatabaseIfModelChanges”-初始化程序类,因为我想创建一个特殊实体(表)(如果它不存在)。我的问题是,我的 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: 这是一个工作解决方案。当数据库之前不存在时,一切正常。但我没有选择删除/创建数据库。

I need to use an 'DropCreateDatabaseIfModelChanges' - Initializer class, because I want to create one special entity (table), if it doesn't exist. My problem is, that I've also got another entity in my DbContext, which shouldn't be part of the model compatibility check.

I'm getting the following error message:

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.

Is there any possibility to exclude a special entity from this check?

EDIT:
I've done what Devart has suggested. The problem seems to be different, than I first tought. It all works fine, if I let EF create a new database with my CheckedContext. But I'm getting the error message above, when I'll try to use my NonCheckedContext wich should use an existing table ...

EDIT2:
This is a working solution. Everything works fine, when the database doesn't exist before. But it's no option for me, to Drop/Create the database.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

匿名的好友 2024-11-15 18:23:13

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

A possible solution: create a context class inherited from DbContext, and then create two separate subcontexts inherited from the base one - CheckedContext and NonCheckedContext, and set the Database Initialization Strategy accordingly.
Please note that you should access the CheckedContext first so that it fires all its checks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文