首页 > 代码库 > EF Code First 数据库迁移Migration剖析
EF Code First 数据库迁移Migration剖析
1.简介
Entity Framework 的Code First 方式,提供了一种方式:编写模型Model,生成模型变更,根据模型变更修改数据库。
而其所以来的环境就是强大的Nuget,如果还在是VS2010一下的同学,请不要往下看了,将无一益处。
2.操作步骤
1)建立或修改Model,即实体类;
这里演示修改:
public class BootStrapLists { public int ID { get; set; } public string Title { get; set; } [DataType(DataType.MultilineText)] public string Description { get; set; } /// <summary> /// 新增一个时间字段 /// </summary> public DateTime CreateDate { get; set; } }
2)建立或修改ModelMap;
public class BootStrapListsMap : EntityTypeConfiguration<BootStrapLists>{ public BootStrapListsMap() { ToTable(""); HasKey(zw => zw.ID).Property(zw => zw.ID).HasColumnName("ID"); Property(zw => zw.Title).HasColumnName("Title"); Property(zw => zw.Description).HasColumnName("Description"); //新增 Property(zw => zw.CreateDate).HasColumnName("CreateDate"); }}
3)在OnModelCreate时增加Map;
public DbSet<BootStrapLists> BootStrapLists { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Configurations.Add(new BootStrapListsMap()); //dynamically load all configuration
4)使用命令Add-Migration
如果是第一次使用,则请先使用:
Enable-Migrations
在生成了 红色框所示的文件和文件夹
继续使用命令:
Add-Migration Tests
其中,Tests为自定义名称;
生成迁移文件:
5)使用命令Update-DataBase
Update-DataBase
迁移原理:查询数据库的表,__MigrationHistory,遍历Migrations文件夹下的所有文件,如果文件不在__MigrationHistory表内,那么就执行迁移。
Eg: 如果20141104233562_Tests不在数据库内,则执行迁移。
11)初始数据库:
22)执行:
33)执行之后的数据库:
修改表的结果:
6)深究
public partial class Tests : DbMigration{ public override void Up() { AddColumn("dbo.BootStrapLists", "CreateDate", c => c.DateTime(nullable: true)); } public override void Down() { }}
类,DbMigration中邮很多API,可以直接修改数据库!
EF Code First 数据库迁移Migration剖析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。