0

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

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 小时后再次出现错误!

我真的不知道,这是什么原因造成的??

4

1 回答 1

0

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

模型在运行时有什么方法可以改变吗?

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

1.像现在一样从模型中重新创建数据库并编写脚本(script1.sql)。

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

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

这应该让您了解模型中发生了什么变化。

祝你好运

于 2013-06-25T01:54:00.397 回答