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

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

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....