1

当我更改新数据库时应用程序未检测到新数据库并检索错误的问题

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

但我不使用迁移,所以我不通过包管理器控制台更新数据库我该如何解决这个问题?

4

2 回答 2

0

实际上它确实检测到数据库中的更改。数据库与模型不同。错误消息。

当存储在迁移历史记录表中的哈希与计算的哈希不匹配时,将引发此错误。(看看 __MigrationHistory 表,可能在系统表下)

如果您删除此表,则该检查基本上被禁用。您可以通过添加Database.SetInitializer<YourContextType>(null)到应用程序的启动来实现类似的效果。后者禁用从该应用程序内创建数据库,因此如果您想通过代码创建数据库,则需要从单独的应用程序(例如控制台应用程序)执行此操作。对于 Web 应用程序,我更喜欢采用这种方式。

其次:如果您手动更改数据库(更改列、添加表等),则需要调整模型。因此,对于每个 DDL 语句,更改您的代码。

如果您不首先使用代码,则可以在设计器中更新现有模型。

于 2013-10-17T19:54:21.167 回答
0

当我第一次开始使用 code first 和 mvc 时,我遇到了这个问题。下面的答案是绝对正确的,但你应该去 ASP.net 网站并做一些关于代码优先迁移的教程。您需要更好地了解更新数据库以及初始化和迁移的工作原理。

于 2013-10-17T20:40:14.677 回答