1、EF Code First创建数据库

  新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework。

  在程序包管理器控制台中执行以下语句,安装EntityFramework。

PM> Install-Package EntityFramework

  安装成功后,界面提示如下图:

  在新建的Portal控制台应用程序中添加两个实体类,代码结构如下:

  其中,类文件PortalContext.cs的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;using System.Data.Entity;
using System.Data.Entity.Infrastructure;using Portal.Entities;
using Portal.Mapping;namespace Portal
{public class PortalContext : DbContext{static PortalContext(){Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PortalContext>());}public DbSet<Province> Provinces { get; set; }public DbSet<Category> Categories { get; set; }protected override void OnModelCreating(DbModelBuilder modelBuilder){modelBuilder.Configurations.Add(new ProvinceMap());modelBuilder.Configurations.Add(new CategoryMap());}}
}

  在静态构造函数中,设置了当数据库模型发生改变时,则删除当前数据库,重建新的数据库。

  代码执行后,生成的数据库:

2、EF Code First数据库迁移

2.1、生成数据库

  修改类文件PortalContext.cs的静态构造函数,取消当数据库模型发生改变时删除当前数据库重建新数据库的设置。

static PortalContext()
{Database.SetInitializer<PortalContext>(null);
}

  1>、在程序包管理器控制台,执行语句:

PM> Enable-Migrations -EnableAutomaticMigrations

  执行成功后,Portal控制台应用程序代码结构中,添加Migrations文件夹,并生成类文件Configuration.cs。

namespace Portal.Migrations
{using System;using System.Data.Entity;using System.Data.Entity.Migrations;using System.Linq;internal sealed class Configuration : DbMigrationsConfiguration<Portal.PortalContext>{public Configuration(){AutomaticMigrationsEnabled = true;}protected override void Seed(Portal.PortalContext context){//  This method will be called after migrating to the latest version.//  You can use the DbSet<T>.AddOrUpdate() helper extension method //  to avoid creating duplicate seed data. E.g.////    context.People.AddOrUpdate(//      p => p.FullName,//      new Person { FullName = "Andrew Peters" },//      new Person { FullName = "Brice Lambson" },//      new Person { FullName = "Rowan Miller" }//    );//
        }}
}

  2>、在程序包管理器控制台,执行语句:

PM> Add-Migration InitialCreate

  执行成功后,在Migrations文件夹中新增类文件201309201556388_InitialCreate.cs

  3>、在程序包管理器控制台,执行语句:

PM> Update-Database -Verbose

  执行结果生成与上面一致的数据库

  4>、在数据库模型中添加City类,执行程序包管理器控制台语句,Migrations文件夹中新增类文件201309201643300_AddCity.cs。

PM> Add-Migration AddCity

  再次执行程序包管理器控制台语句

PM> Update-Database -Verbose

  Portal控制台应用程序的代码结构:

  数据库更新成功之后,在数据库中新增表City。

2.2、版本回溯

  修改数据库中表City,删除其中字段ProvinceNo。在程序包管理器控制台中执行以下两条语句:

?
PM> Add-Migration ModifyCity
PM> Update-Database -Verbose

  执行成功之后,City表结构修改为:

  执行程序包管理器控制台语句,进行数据库版本回溯。

PM> Update-Database –TargetMigration:"201309201643300_AddCity.cs"

2.3、生成数据库版本之间的Sql脚本

  执行程序包管理器控制台语句,生成数据库版本之间的Sql脚本。该操作仅为生成Sql语句,并未在数据库中进行执行。

Update-Database -Script -SourceMigration:"201309201643300_AddCity.cs" -TargetMigration:"201309201708043_ModifyCity.cs" 

  其中-TargetMigration在未指定的情况,默认为迁移到最新的版本。

3、EF Code First Migrations语句的其他参数

1>、为指定的DbContext启用数据库迁移

PM> Enable-Migrations -ContextTypeName Portal.PortalContext

2>、设置是否允许自动迁移

Enable-Migrations

生成的Configuration.cs类文件的构造函数

public Configuration()
{AutomaticMigrationsEnabled = false;
}

3>、Enable-Migrations指定项目名称

PM> Enable-Migrations -StartUpProjectName Portal

如果在“Package Manager Console”中选择了默认项目可以不设置“-StartUpProjectName”参数;如果多次执行此命令可以添加-Force参数。

4>、查看所执行的Sql语句 -Verbose指令

Update-Database -Verbose 

4、代码下载

Portal.zip

5、参考资料

http://www.cnblogs.com/libingql/p/3330880.html

转载于:https://www.cnblogs.com/sunzhao/p/9006444.html

EF Code First Migrations数据库迁移相关推荐

  1. EF mysql 数据迁移_EF Code First Migrations数据库迁移

    1.EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework. 在程序包管理器控制台中执行以下语句,安装EntityFramewo ...

  2. mysql asp.net core_基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(2) - EF Core (MySQL) CodeFirst 数据库迁移与依赖注入...

    概述 上一章,我们简单的搭建了依赖注入的三层架构,但是,没有真正的使用,而我们现在就使用MySQL数据,基于 EF Core 的 DbFirst 进行框架搭建. 步骤 1. 右击 Entity 项目, ...

  3. [Doctrine Migrations] 数据库迁移组件的深入解析三:自定义数据字段类型

    自定义type 根据官方文档,新建TinyIntType类,集成Type,并重写getName,getSqlDeclaration,convertToPHPValue,getBindingType等方 ...

  4. migration mysql_MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例...

    dotnet core 2.0 发布已经好几天了,期间也把原来 dotnet core 1.1 的 MVC 项目升级到了 2.0,升级过程还是比较顺利的,变动也不是太多.升级的过程中也少不了 Enti ...

  5. MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例

    dotnet core 2.0 发布已经好几天了,期间也把原来 dotnet core 1.1 的 MVC 项目升级到了 2.0,升级过程还是比较顺利的,变动也不是太多.升级的过程中也少不了 Enti ...

  6. EF code First数据迁移学习笔记

    准备工作 1.新建一个控制台项目, 在"程序包管理控制台"执行 Install-package EntityFramework  //安装EF环境 2.在项目下新建类(Paper) ...

  7. 使用Code First Migrations依据代码更新数据库结构

    ADO.NET团队最近发布了Code First Migrations Beta 1 for Entity Framework (EF).该程序包已经在NuGet提供,位于EntityFramewor ...

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

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

  9. EF mysql 数据迁移_EF-CodeFirst实现过程+数据库迁移

    系列文章: EF-ModelFirst实现过程+数据库迁移     http://www.jianshu.com/p/2a53f318144d EF-DBFirst实现过程    http://www ...

最新文章

  1. libIlmImf-2_2.so.22 :cannot open shared object file :No such file or direct
  2. 技术图文:Matlab VS. Numpy 矩阵基本运算
  3. ruby 工程的创建 使用JetBrains RubyMine建立rails 工程
  4. python实现api server_使用Python的http.server实现一个简易的Web Api对外提供HanLP拼音转换服务...
  5. Android 图形架构
  6. C Programming Language
  7. python如何自动缩进_Python缩进
  8. 小程序基础能力~网络
  9. 下列关于java集合说法错误的是_下列关于Spring的说法错误的是( )。
  10. html如何转换成电子表,如何轻松将电子表格转换为HTML [快速提示] | MOS86
  11. Android签名与风险分析
  12. 常用网络js链接大全(jQuery、bootstrap、vue、ECharts、easyUI、React、maven、Mybatis、Spring、SpringMVC、Redis)
  13. Monorepo + lerna rush.js
  14. 【数字IC】深入浅出理解I2C协议
  15. python+itchat实现微信远程控制电脑
  16. 关于ES5和ES6的简介
  17. [数学公式]等差数列求和
  18. 三种方法助力绝地求生:刺激战场和绝地求生:全军出击快速上分吃鸡
  19. c语言解决方程的论文,c语言编程求解线性方程组论文1.doc
  20. 大数据流式处理框架Flink介绍

热门文章

  1. python中xpath_Python爬虫之Xpath语法
  2. 树莓派更换软件源提高下载速度
  3. linux7切断防火墙,Linux7关闭防火墙
  4. mysql 查看索引深度_mysql 学习 - 索引深度理解
  5. java中system_《java中System类》 | 学步园
  6. java源文件扩展名_java源文件名的后缀是什么?
  7. vueform表单文件上传_峰哥说技术系列-8.Spring Boot文件上传(Form表单和Ajax方式)
  8. linux服务器 远程桌面,如何远程桌面Linux服务器
  9. 干翻Java_Java第三次作业第一题
  10. java的spinner_java中的spinner | 学步园