码迷,mamicode.com
首页 > 数据库 > 详细

EF Code First 数据库迁移Migration剖析

时间:2014-11-04 12:48:51      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   color   ar   使用   sp   

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

    在生成了bubuko.com,布布扣 红色框所示的文件和文件夹

    继续使用命令:

Add-Migration Tests

其中,Tests为自定义名称;

bubuko.com,布布扣

生成迁移文件:

bubuko.com,布布扣

 

5)使用命令Update-DataBase

Update-DataBase

  迁移原理:查询数据库的表,__MigrationHistory,遍历Migrations文件夹下的所有文件,如果文件不在__MigrationHistory表内,那么就执行迁移。

 

Eg:  如果20141104233562_Tests不在数据库内,则执行迁移。

11)初始数据库:

bubuko.com,布布扣

 

22)执行:

bubuko.com,布布扣

33)执行之后的数据库:

bubuko.com,布布扣

 

修改表的结果:

bubuko.com,布布扣

 

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剖析

标签:des   style   blog   http   io   color   ar   使用   sp   

原文地址:http://www.cnblogs.com/pengzhen/p/4073029.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!