EF 4.3 CodeFirst MVC3 WebApp 和控制台使用相同的模型,但不知何故它们“看到”了导致模型支持错误的不同模型

发布于 2025-01-07 12:48:26 字数 519 浏览 0 评论 0原文

我对多个应用程序使用相同的模型:MVC3 Web 应用程序、Windows 服务和控制台应用程序。当我启动 MVC3 Web 应用程序时,它会生成数据库。我可以重新启动它,一切都很好。但是当我启动控制台应用程序时,出现错误:

支持“...Context”上下文的模型自 数据库已创建。考虑使用 Code First 迁移来更新 数据库 (http://go.microsoft.com/fwlink/?LinkId=238269)。

当我删除数据库,启动控制台应用程序时,也会发生同样的情况,我可以重新启动它,一切都很好。当我启动 MVC Web 应用程序时。崩溃:模型支持...等。

在 EF4.1 中,删除 EdmMeta 表“解决”了该问题。但由于 EF4.3 不再有这样的表,我无法以这种方式修复它。我已经检查过所有应用程序都引用相同模型的 dll。我已仔细检查所有项目是否引用 EF4.3,因此这不是问题的原因。

任何建设性的帮助将不胜感激。

问候, 埃尔文·范迪克。

I'm using the same model for multiple applications: MVC3 web app, Windows services, and a console application. When I start the MVC3 web app, it generates the database. I can restart it, and everything is fine. But when I start the console application I get an error:

The model backing the '...Context' context has changed since the
database was created. Consider using Code First Migrations to update
the database (http://go.microsoft.com/fwlink/?LinkId=238269).

Same occurs when I drop the database, start console app, I can restart this, and everything is fine too. When I start the MVC web app. Crash: model backing... etc.

In EF4.1 removing the EdmMeta table 'solved' the problem. But since EF4.3 doesn't have such a table anymore I can't fix it that way. I've checked that all apps refer to same model dll's. I've double checked that all projects reference to EF4.3 so that's not the cause of the problem.

Any constructive help would be appreciated.

Regards,
Erwin van Dijk.

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

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

发布评论

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

评论(1

假情假意假温柔 2025-01-14 12:48:26

您不应让多个应用程序创建数据库 - 这可能会导致数据库意外删除。只需选择一个负责数据库创建和所有其他用途的数据库即可:

Database.SetInitializer<YourContext>(null);

同时将其添加到派生 DbContext 中的 OnModelCreating 中:

modelBuilder.Conventions.Remove<IncludeMetadataConvention>();

这应该可以避免哈希计算问题。

有关哈希计算存在问题的更多原因,请参阅 此处描述

You should not let multiple applications to create the database - that can result in unexpected deletion of your database. Simply choose one which will be responsible for database creation and in all other use:

Database.SetInitializer<YourContext>(null);

Also add this to your OnModelCreating in your derived DbContext:

modelBuilder.Conventions.Remove<IncludeMetadataConvention>();

This should avoid problems with hash computation.

More about reasons why problems with hash computation exist is described here.

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