数据库创建时模型已更改

时间:2013-06-20 09:15:09

标签: asp.net-mvc-3 web-deployment

我上传了我的MVC3项目,这是一个简单的博客,起初它运作良好,但几个小时后!出现以下错误(我已将自定义错误设置为关闭以查看错误)

The model backing the 'SiteContext' context has changed since the database was created. Either manually delete/update the database, or call Database.SetInitializer with an IDatabaseInitializer instance. For example, the DropCreateDatabaseIfModelChanges strategy will automatically delete and recreate the database, and optionally seed it with new data.

要解决此问题,我必须手动删除我的数据库并再次创建,然后恢复到我创建的备份。但经过2个小时后我又收到了错误!

我真的不知道是什么造成的?

1 个答案:

答案 0 :(得分:0)

当您创建模型并要求EF从中创建数据库时,EF将哈希模型并将哈希值与数据库一起存储。无论何时创建上下文,EF都会重新计算哈希值并将其与存储在数据库中的哈希值进行匹配。如果模型以任何方式更改,则生成的哈希将不同,EF将抛出您刚刚看到的异常。这样做是为了使模型与数据库保持同步。

模型在运行期间有什么变化吗?

你可以做的一件事就是找出差异

1.按照您现在的模式从模型中重新创建数据库,并将其编写为脚本(script1.sql)。

2.等到错误发生并删除数据库并重新创建并编写脚本(script2.sql)

3.尝试比较两者,看看你是否能发现模式的差异。

这可以让您了解模型中的变化。

古德勒克