EF Code First Migrations数据库迁移
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数据库迁移相关推荐
- EF mysql 数据迁移_EF Code First Migrations数据库迁移
1.EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework. 在程序包管理器控制台中执行以下语句,安装EntityFramewo ...
- mysql asp.net core_基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(2) - EF Core (MySQL) CodeFirst 数据库迁移与依赖注入...
概述 上一章,我们简单的搭建了依赖注入的三层架构,但是,没有真正的使用,而我们现在就使用MySQL数据,基于 EF Core 的 DbFirst 进行框架搭建. 步骤 1. 右击 Entity 项目, ...
- [Doctrine Migrations] 数据库迁移组件的深入解析三:自定义数据字段类型
自定义type 根据官方文档,新建TinyIntType类,集成Type,并重写getName,getSqlDeclaration,convertToPHPValue,getBindingType等方 ...
- migration mysql_MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例...
dotnet core 2.0 发布已经好几天了,期间也把原来 dotnet core 1.1 的 MVC 项目升级到了 2.0,升级过程还是比较顺利的,变动也不是太多.升级的过程中也少不了 Enti ...
- MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例
dotnet core 2.0 发布已经好几天了,期间也把原来 dotnet core 1.1 的 MVC 项目升级到了 2.0,升级过程还是比较顺利的,变动也不是太多.升级的过程中也少不了 Enti ...
- EF code First数据迁移学习笔记
准备工作 1.新建一个控制台项目, 在"程序包管理控制台"执行 Install-package EntityFramework //安装EF环境 2.在项目下新建类(Paper) ...
- 使用Code First Migrations依据代码更新数据库结构
ADO.NET团队最近发布了Code First Migrations Beta 1 for Entity Framework (EF).该程序包已经在NuGet提供,位于EntityFramewor ...
- Entity Framework 5.0系列之Code First数据库迁移
我们知道无论是"Database First"还是"Model First"当模型发生改变了都可以通过Visual Studio设计视图进行更新,那么对于Cod ...
- EF mysql 数据迁移_EF-CodeFirst实现过程+数据库迁移
系列文章: EF-ModelFirst实现过程+数据库迁移 http://www.jianshu.com/p/2a53f318144d EF-DBFirst实现过程 http://www ...
最新文章
- libIlmImf-2_2.so.22 :cannot open shared object file :No such file or direct
- 技术图文:Matlab VS. Numpy 矩阵基本运算
- ruby 工程的创建 使用JetBrains RubyMine建立rails 工程
- python实现api server_使用Python的http.server实现一个简易的Web Api对外提供HanLP拼音转换服务...
- Android 图形架构
- C Programming Language
- python如何自动缩进_Python缩进
- 小程序基础能力~网络
- 下列关于java集合说法错误的是_下列关于Spring的说法错误的是( )。
- html如何转换成电子表,如何轻松将电子表格转换为HTML [快速提示] | MOS86
- Android签名与风险分析
- 常用网络js链接大全(jQuery、bootstrap、vue、ECharts、easyUI、React、maven、Mybatis、Spring、SpringMVC、Redis)
- Monorepo + lerna rush.js
- 【数字IC】深入浅出理解I2C协议
- python+itchat实现微信远程控制电脑
- 关于ES5和ES6的简介
- [数学公式]等差数列求和
- 三种方法助力绝地求生:刺激战场和绝地求生:全军出击快速上分吃鸡
- c语言解决方程的论文,c语言编程求解线性方程组论文1.doc
- 大数据流式处理框架Flink介绍
热门文章
- python中xpath_Python爬虫之Xpath语法
- 树莓派更换软件源提高下载速度
- linux7切断防火墙,Linux7关闭防火墙
- mysql 查看索引深度_mysql 学习 - 索引深度理解
- java中system_《java中System类》 | 学步园
- java源文件扩展名_java源文件名的后缀是什么?
- vueform表单文件上传_峰哥说技术系列-8.Spring Boot文件上传(Form表单和Ajax方式)
- linux服务器 远程桌面,如何远程桌面Linux服务器
- 干翻Java_Java第三次作业第一题
- java的spinner_java中的spinner | 学步园