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剖析的更多相关文章
- 3.3 使用Code First数据库迁移
		
当Entity Framework Code First的数据模型发生异动时,默认会引发一个System.InvalidOpertaionException异常.一种解决方法是在Global.asax ...
 - EF Code First 数据迁移操作
		
打开执行命令窗体 1.EF Code First创建数据库 PM> Install-Package EntityFramework 2.EF Code First数据库迁移 2.1.生成数据库 ...
 - Code First 数据库迁移
		
当 Entity Framework Code First 的数据模型发生改变时,默认会引发一个System.InvalidOperationException 的异常.解决方法是使用DropCrea ...
 - 使用 Code First 数据库迁移
		
当 Entity Framework Code First 的数据模型发生改变时,默认会引发一个System.InvalidOperationException 的异常.解决方法是使用DropCrea ...
 - Entity Framework 5.0系列之Code First数据库迁移
		
我们知道无论是"Database First"还是"Model First"当模型发生改变了都可以通过Visual Studio设计视图进行更新,那么对于Cod ...
 - EF Code First数据库映射规则及配置
		
EF Code First数据库映射规则主要包括以下方面: 1.表名及所有者映射 Data Annotation: 指定表名 1 using System.ComponentModel.DataAnn ...
 - EF Code First 数据迁移配置
		
这里我想讲清楚code first 数据迁移的两种模式,还有开发环境和生产环境数据迁移的最佳实践. 1.1 数据迁移综述 EF Code first 虽然已经有了几种不同的数据库初始化策略,但是大部分 ...
 - MVC VS2012  Code First 数据库迁移教程
		
1.在“服务资源管理器”连接数据库 2.打开工具-Nuget程序包管理器“程序包管理器控制台” 3.控制台输入命令:PM> Enable-Migrations -StartUpProjectNa ...
 - ASP.NET MVC 4下 Code First 数据库迁移
		
一.命令开启 1.打开控制台:视图->其他窗口->程序包管理器控制台: 2.启动数据库迁移,执行命令:enable-migrations 创建成功后会新增migrations目录等. 若 ...
 
随机推荐
- MVC中html转义问题(直接输出html的方法)
			
MVC中如果用@string(string是包含html代码的字符串)形式输出字符串,那么对应的html标签会自动转义,如果想直接输出html可用以下方法: @(new HtmlString( &qu ...
 - HDOJ 1590
			
#include<stdio.h> #include<iostream> #include<stdlib.h> #include<string.h> u ...
 - Scrapy and Selenium
			
How to scrapy js? scrapy结合webkit抓取js生成的页面 http://www.cnblogs.com/Safe3/archive/2011/10/19/2217965.ht ...
 - java并发库 Lock 公平锁和非公平锁
			
jdk1.5并发包中ReentrantLock的创建可以指定构造函数的boolean类型来得到公平锁或非公平锁,关于两者区别,java并发编程实践里面有解释 公平锁: Threads acquir ...
 - JavaScript String 对象方法
			
String 对象方法 方法 描述 anchor() 创建 HTML 锚. big() 用大号字体显示字符串. blink() 显示闪动字符串. bold() 使用粗体显示字符串. charAt() ...
 - IIS安装时,添加/编辑应用程序扩展名映射 确定按钮不可用。
			
原因是:执行文件的路径太长,需要激活按钮. 方法一:选择较短路径的执行文件,先激活按钮. 方法二:点击该路径,就可以激活确认按钮了.
 - Lowest Common Ancestor
			
Given the root and two nodes in a Binary Tree. Find the lowest common ancestor(LCA) of the two nodes ...
 - Android runProguard配置 导致module lib 中的包编译时无法识别
			
今天写代码时用到了另一个lib型的工程,把它添加到dependencies后,在原工程中可以引用lib中的文件了,但是编译时就会报错,提示包不存在,后来在build.gradle中设置runProgu ...
 - ShortestPath:Six Degrees of Cowvin Bacon(POJ 2139)
			
牛与电影 题目大意:就是一群牛,又在玩游戏了(怎么你们经常玩游戏),这个游戏规则如下,把牛拆分成一个一个组,并且定义一个“度”,规定在一个组的牛与他自己的度为0,与其他牛的度为1,不同组的牛不存在度, ...
 - codeforces  489C.Given Length and Sum of Digits...  解题报告
			
题目链接:http://codeforces.com/problemset/problem/489/C 题目意思:给出 m 和 s,需要构造最大和最小的数.满足长度都为 m,每一位的数字之和等于 s. ...