The model backing the ‘MyDbContext’ context has changed since the database was created. Consider using Code First Migrations to update the database (07000).
是什么原因导致这种情况?我真的只是创建了一个全新的数据库,并没有改变任何东西,但是每次尝试从控制器访问模型时,都会抛出一个这样的结果。
编辑
这与我正尝试用两个独立实体共享一个连接字符串(即一个数据库)的事实有关。
解决方法
EF codefirst将首先查看您的DbContext,并发现在其中声明的所有实体集合(以及通过导航属性查看与这些实体相关的实体)。然后,它会查看您给它一个连接字符串的数据库,并确保所有表格与模型中实体的结构相匹配。如果它们不匹配,那么它不能读/写这些表。无论何时创建新数据库,或者如果您更改了实体类声明,例如添加属性或更改数据类型,则会检测到模型和数据库不同步。默认情况下,它将简单地给你上面的错误。通常在开发过程中,您想要发生的是数据库被重新创建(擦除任何数据),并从您的新模型结构再次生成。
为此,请参阅本文中的“RecreateDatabaseIfModelChanges功能”:
http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx
您基本上需要提供一个继承自RecreateDatabaseIfModelChanges的数据库初始化程序。