2013-06-20 126 views
0

我已经上传了我的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

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

模型在运行时可以有任何改变吗?

有一两件事你可以做找出不同之处是

1.Re创建从模型数据库,你现在所做的,并得到它脚本(script1.sql)。

2.Wait直到错误发生,并删除数据库,并再重新创建和脚本它(script2.sql)

3.Try比较两个,看看你是否能发现的差异模式。

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

Goodluck