asp.net-mvc – 模型支持DB上下文已更改;考虑代码优先迁移

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 模型支持DB上下文已更改;考虑代码优先迁移前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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的数据库初始化程序。

一旦你去生产,不再想要丢失数据,那么你会删除这个初始化程序,而是使用数据库迁移,这样可以部署更改而不会丢失数据。

猜你在找的asp.Net相关文章