Code First Migrations 迁移更新数据库
来源:互联网 发布:淘宝网首页石英加热管 编辑:程序博客网 时间:2024/05/17 23:51
在MVC开发当中难免会对类进行修改,修改后再次运行就会出现异常,提示上下文的模型已在数据库创建后发生改变。
支持“AppContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库(http:
//go.microsoft.com/fwlink/?LinkId=238269)。
如果是项目初期开发倒是好办,可以删掉数据库重新建立,但是如果项目已经运行了,我想你不会想初期那样做吧,会照成数据丢失的。这个时候就需要使用EF的数据迁移功能了,下面教你如何使用数据迁移。
启用迁移
打开VS,工具>库程序包管理器>程序包管理器控制台。
在控制台中输入Enable-Migrations(不分大小写),如下图所示
输入这个命令后还会在项目中创建Migrations文件夹,里面包含两个文件
- Configuration.cs 这个类允许你自己配置对AppContext上下文迁移的行为。比如添加一些数据的初始化操作,例如:
- 12345
context.Blogs.AddOrUpdate(
p => p.Title,
new
Blog { Title =
"测试标题1"
, Content =
"内容1"
},
new
Blog { Title =
"测试标题2"
, Content =
"内容2"
}
);
- 201403310555286_InitialCreate.cs,这个文件名是由 时间戳+下划线+ Initial.cs组成的,这个类包含了创建数据库架构的代码。
生成和运行迁移
Code First的数据迁移有两个命令:
- Add-Migration 对比当前数据库和模型的差异,生成相应的代码,使数据库和模型匹配的。
- Update-Database 将任何挂起的迁移到数据库。
在控制台中输入Add-Migration AddBlogCreate,回车运行.
AddBlogCreate 是可以随意取的,是EF进行数据迁移的一个标识,为了更好知道这次迁移是干什么的最好取有意义的名称。命令运行完后,打开新添加的201403310649014_AddBlogCreate类,在Up方法里面可以看到添加新列的代码。
public
partial
class
AddBlogCreate : DbMigration
{
public
override
void
Up()
{
AddColumn(
"dbo.Blogs"
,
"CreateTime"
, c => c.DateTime(nullable:
false
));
}
public
override
void
Down()
{
DropColumn(
"dbo.Blogs"
,
"CreateTime"
);
}
}
在程序包管理器控制台运行Update-Database 提交到数据库,在数据库中你将会看到新增的CreateTime列.而且在Configuration类中的send方法也会执行。
其实两个命令即可:
Enable-Migrations
Update-Database -verbose -force
迁移到一个特定的版本(包括降级)
在程序包管理器控制台中运行Update-Database –TargetMigration: AddBlogCreate,数据库将还原到新增CreateTime属性的时候。
启用自动迁移
如果你想你部署的应用程序在启动的时候自动升级数据库,你可以通过注册数据库初始化MigrateDatabaseToLatestVersion做到这一点。
将Configuration构造函数的设置为:AutomaticMigrationsEnabled=true,AutomaticMigrationDataLossAllowed=true.
public
Configuration() {
AutomaticMigrationsEnabled =
true
;
AutomaticMigrationDataLossAllowed =
true
;
}
在Global.asax的 Application_Start 方法中添加以下代码:
Database.SetInitializer(
new
MigrateDatabaseToLatestVersion<AppContext, Configuration>());
- Code First Migrations 迁移更新数据库
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- EF Code First Migrations数据库迁移
- EF Code First Migrations数据库迁移
- EF Code First Migrations数据库迁移
- Code First Migrations更新数据库结构
- Code First 迁移更新数据库
- Code First 迁移更新数据库
- 使用 Code First Migrations 更新数据库遇到的问题
- Code First Migrations更新数据库结构的具体步骤
- Code First Migrations更新数据库结构的具体步骤
- Code First Migrations更新数据库结构的具体步骤
- 数据通信
- SQL like 模糊查询
- Android 开发之自定义标题栏、状态栏
- Bounding-box Regression深度解析
- Hibernate中的一个对象存在于以下四个状态之中
- Code First Migrations 迁移更新数据库
- 硬齿面减速机比软齿面减速机贵多少?
- js 抢购倒计时
- JAVA数据结构和算法:第三章(栈和队列)
- 神经网络 梯度下降算法/delta规则
- 【转载】微信小程序教程系列
- 匈牙利算法,二分图最大匹配、多重匹配模板
- C#泛型委托与Lambda总结
- 解决webservice里调用耗时方法出错问题