EF 数据迁移
支持“AppContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库
在用EF CodeFirst模式开发当中难免会对类进行修改,修改后再次运行就会出现异常,提示上下文的模型已在数据库创建后发生改变。
如果是项目初期开发倒是好办,可以删掉数据库重新建立,但是如果项目已经运行了,我想你不会想初期那样做吧,会照成数据丢失的。这个时候就需要使用EF的数据迁移功能了,下面教你如何使用数据迁移。
打开VS,工具>库程序包管理器>程序包管理器控制台。
在控制台中输入Enable-Migrations(不分大小写)。
输入这个命令后还会在项目中创建Migrations文件夹,里面包含两个文件
1:Configuration.cs 这个类允许你自己配置对AppContext上下文迁移的行为。比如添加一些数据的初始化操作。
2:201403310555286_InitialCreate.cs,这个文件名是由 时间戳+下划线+ Initial.cs组成的,这个类包含了创建数据库架构的代码。
执行“Add-Migration FirstMigration”命令,添加一个名为FirstMigration的迁移
执行“Update-Database”命令,更新数据库架构
另外,如果我们要对指定的项目进行数据迁移,我们只需要在命令后指定项目名称就行了,例如:
Enable-Migrations -ProjectName DemoWeb
Add-Migration FirstMigration -ProjectName DemoWeb
Update-Database -ProjectName DemoWeb
如果更新数据库存在冲突而不能执行更新,可以添加 -Force强制执行,例如:“Update-Database -Force”
namespace Demo.Data.Migrations { internal sealed class Configuration : DbMigrationsConfiguration<DemoDbContext> { public Configuration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; } } }