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剖析的更多相关文章

  1. 3.3 使用Code First数据库迁移

    当Entity Framework Code First的数据模型发生异动时,默认会引发一个System.InvalidOpertaionException异常.一种解决方法是在Global.asax ...

  2. EF Code First 数据迁移操作

    打开执行命令窗体 1.EF Code First创建数据库 PM> Install-Package EntityFramework 2.EF Code First数据库迁移 2.1.生成数据库 ...

  3. Code First 数据库迁移

    当 Entity Framework Code First 的数据模型发生改变时,默认会引发一个System.InvalidOperationException 的异常.解决方法是使用DropCrea ...

  4. 使用 Code First 数据库迁移

    当 Entity Framework Code First 的数据模型发生改变时,默认会引发一个System.InvalidOperationException 的异常.解决方法是使用DropCrea ...

  5. Entity Framework 5.0系列之Code First数据库迁移

    我们知道无论是"Database First"还是"Model First"当模型发生改变了都可以通过Visual Studio设计视图进行更新,那么对于Cod ...

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

    EF Code First数据库映射规则主要包括以下方面: 1.表名及所有者映射 Data Annotation: 指定表名 1 using System.ComponentModel.DataAnn ...

  7. EF Code First 数据迁移配置

    这里我想讲清楚code first 数据迁移的两种模式,还有开发环境和生产环境数据迁移的最佳实践. 1.1 数据迁移综述 EF Code first 虽然已经有了几种不同的数据库初始化策略,但是大部分 ...

  8. MVC VS2012 Code First 数据库迁移教程

    1.在“服务资源管理器”连接数据库 2.打开工具-Nuget程序包管理器“程序包管理器控制台” 3.控制台输入命令:PM> Enable-Migrations -StartUpProjectNa ...

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

     一.命令开启 1.打开控制台:视图->其他窗口->程序包管理器控制台: 2.启动数据库迁移,执行命令:enable-migrations 创建成功后会新增migrations目录等. 若 ...

随机推荐

  1. 免费馅饼 Why WA

    免费馅饼 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 1576  Solved: 577 Description 都说天上不会掉馅饼,但有一天gameb ...

  2. 在Linux用户空间做内核空间做的事情

    导读 我相信,Linux 最好也是最坏的事情,就是内核空间(kernel space)和用户空间(user space)之间的巨大差别.如果没有这个区别,Linux 可能也不会成为世界上影响力最大的操 ...

  3. 【NGUI】grid下面的item的重复利用

    http://blog.csdn.net/u012091672/article/details/21159075解决的问题 使用grid放置item的时候,每次数据可能都不一样,但是每次都删除grid ...

  4. easyui 删除行bug

    easyui删除行,出现了bug.(经常使用这个框架的人几乎都会遇到) 我也非常纳闷,今天特地试了很久. 最后发现,如果是自己datagrid('getRows') 然后迭代出来,最后算出行号,可以成 ...

  5. vim常用指令及快捷键(持续更新)

    (这些文章都是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) 发现了个非常赞的网站  http://openvim.com/ 以下很多操作都是安装好vund ...

  6. 【SpringMVC】SpringMVC系列4之@RequestParam 映射请求参数值

    4.@RequestParam 映射请求参数值 4.1.概述     Spring MVC 通过分析处理方法的签名,将 HTTP 请求信息绑定到处理方法的相应人参中.Spring MVC 对控制器处理 ...

  7. AngularJS服务中serivce,factory,provider的区别

    Angular服务是一个由服务工厂创建的单例对象.这些服务工厂是由 service provider 依次创建的.而service providers是构造函数.它们必须包含一个$get属性用于在实例 ...

  8. win平台检查内存泄露

    int main() { _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetBre ...

  9. python chm 中文帮助 (2.7 和 3.4)

    sphinx-build 生成的(htmlhelp) 存在2个问题 1.生成的html 编码 cp2152,需要修改/sphinx/builders/html.py ctx['encoding'] = ...

  10. Java for LeetCode 166 Fraction to Recurring Decimal

    Given two integers representing the numerator and denominator of a fraction, return the fraction in ...