加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 18:44:44 所属栏目:asp.Net 来源:网络整理
导读:The model backing the ‘MyDbContext’ context has changed since the database was created. Consider using Code First Migrations to update the database (07000). 是什么原因导致这种情况?我真的只是创建了一个全新的数据库,并没有改变任何东西,但

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读