我上传了我的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个小时后我又收到了错误!
我真的不知道是什么造成的?
答案 0 :(得分:0)
当您创建模型并要求EF从中创建数据库时,EF将哈希模型并将哈希值与数据库一起存储。无论何时创建上下文,EF都会重新计算哈希值并将其与存储在数据库中的哈希值进行匹配。如果模型以任何方式更改,则生成的哈希将不同,EF将抛出您刚刚看到的异常。这样做是为了使模型与数据库保持同步。
模型在运行期间有什么变化吗?
你可以做的一件事就是找出差异
1.按照您现在的模式从模型中重新创建数据库,并将其编写为脚本(script1.sql)。
2.等到错误发生并删除数据库并重新创建并编写脚本(script2.sql)
3.尝试比较两者,看看你是否能发现模式的差异。
这可以让您了解模型中的变化。
古德勒克