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,可以直接修改数据库!

时间: 2024-09-28 06:10:38

EF Code First 数据库迁移Migration剖析的相关文章

Entity Framework Code First数据库迁移(DB Migration)

一.手动迁移 第1步.启用数据库迁移 打开程序包管理器控制台 工具->库程序包管理器->程序包管理器控制台 打开控制台后,在控制台管理窗口输入 Enable-Migrations 指令,铵下回车键,到这里已启用了数据库迁移,但还没执行,结果如下图: 第2步.运行数据库迁移 在控制台管理窗口输入 Add-Migration指令,来新增一条数据库迁移版本,输入时必须要带上一个版本名称 Add-Migration AddProductCategoryTypeName,如下图: 运行完成后会在解决方案

使用 Code First 数据库迁移

当 Entity Framework Code First 的数据模型发生改变时,默认会引发一个System.InvalidOperationException 的异常.解决方法是使用DropCreateDatabaseAlways 或DropCreateDatabaseIfModelChanges,让Entity Framework 自动将数据库删除,然后重新创建.不过,这种方式过于残暴,应该使用更人性化的方式,让Entity Framework 帮助我们自动调整数据库架构.并且仍然保留现有数

Code First 数据库迁移

当 Entity Framework Code First 的数据模型发生改变时,默认会引发一个System.InvalidOperationException 的异常.解决方法是使用DropCreateDatabaseAlways 或DropCreateDatabaseIfModelChanges,让Entity Framework 自动将数据库删除,然后重新创建.不过,这种方式过于残暴,应该使用更人性化的方式,让Entity Framework 帮助我们自动调整数据库架构.并且仍然保留现有数

MVC VS2012 Code First 数据库迁移教程

1.在"服务资源管理器"连接数据库 2.打开工具-Nuget程序包管理器"程序包管理器控制台" 3.控制台输入命令:PM> Enable-Misgrations 4.以项目MvcGuestbook.Models.MvcGuestbookContext为例: PM> Enable-Misgrations-ContextTypeName MvcGuestbook.Models.MvcGuestbookContext 5.更新数据库:PM>Update-

EF Code First数据库映射规则及配置

EF Code First数据库映射规则主要包括以下方面: 1.表名及所有者映射 Data Annotation: 指定表名 1 using System.ComponentModel.DataAnnotations;2 3 [Table("Product")]4 public class Product指定表名及用户 using System.ComponentModel.DataAnnotations;[Table("Product", Schema = &qu

EF Code First 数据迁移

背景: EF Code First在经历新业务或者业务逻辑变更时,可能会遇到数据库的更改,比如新增表 ,更改表加字段,等等.这个时候,删除原来的数据库重建会丢失数据. 方案1: 如果初次开发,可以选择删除重建. 代码: public TestDbContext() : base("Name=TestConnection") { Database.SetInitializer<TestDbContext>(new DropCreateDatabaseIfModelChange

ASP.NET MVC 4下 Code First 数据库迁移

 一.命令开启 1.打开控制台:视图->其他窗口->程序包管理器控制台: 2.启动数据库迁移,执行命令:enable-migrations 创建成功后会新增migrations目录等. 若报如下错误: PM> Enable-Migrations More than one context type was found in the assembly 'FirstMVC'. To enable migrations for FirstMVC.Models.UsersContext, use

[翻译][MVC 5 + EF 6] 5:Code First数据库迁移与程序部署

原文:Code First Migrations and Deployment with the Entity Framework in an ASP.NET MVC Application 1.启用Code First迁移: 当我们开发一个新的程序时,数据模型经常会发生改变,每次模型发生改变时,就会变得与数据库不同步.我们之前配置EF在每次数据模型发生改变时自动删除然后重建数据库.当我们增加.删除或者改变实体类或者改变DbContext类时,在程序下次运行时将会自动删除已经存在的数据库,并且创

EF code First数据迁移学习笔记(转)

转自:http://www.cnblogs.com/icyJ/p/migration.html 准备工作 1.新建一个控制台项目, 在"程序包管理控制台"执行 Install-package EntityFramework  //安装EF环境 2.在项目下新建类(Paper),也就是code first中的code.建好之后,Ctrl+Shift+B生成项目.(不生成的话,会出现控制器找不到类型或者其他报错) 3.在app.config或web.config的configuration