zoukankan      html  css  js  c++  java
  • 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

        在生成了image 红色框所示的文件和文件夹

        继续使用命令:

    Add-Migration Tests

    其中,Tests为自定义名称;

    image

    生成迁移文件:

    image

    5)使用命令Update-DataBase

    Update-DataBase

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

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

    11)初始数据库:

    image

    22)执行:

    image

    33)执行之后的数据库:

    image

    修改表的结果:

    image

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

  • 相关阅读:
    时空地图TimeGIS 可编辑ArcGIS的Shape矢量文件的地理信息系统
    快手 KSCAD 5.0 矢量图形设计软件
    DWG2SHP DXF2SHP 如何把AutoCAD的DWG,DXF文件转换为Esri ArcGIS的Shape文件
    火了网址
    GIS 网站参考
    快手4.0 (KSCAD)
    用词法分析器Flex过滤日志
    编译器工具 Flex Bison for Windows 简单入门例子
    针对于网络安全领域中基于PCAP流量的数据集
    RBAC权限框架_MVC权限框架
  • 原文地址:https://www.cnblogs.com/pengzhen/p/4073029.html
Copyright © 2011-2022 走看看