一些介绍

CodeFirst是EntityFrameworks的一种开发模式,即代码优先,它以业务代码为主,通过代码来生成数据库,并且加上migration的强大数据表比对功能来生成数据库版本,让程序开发人员不用维护数据库的变更,而直接维护migration即可,在它里面有你当前版本和过去历史版本的所有变更记录!

大叔写过的Migration的文章

第六十回 EF架构~CodeFirst生产环境的Migrations

第六十二回 EF架构~Migration数据迁移的执行顺序

开始今天的《一步一步带您进行Migration数据库版本控制的学习之旅》

(1)通过EF-CodeFirst自己帮我们建立了数据库,初始化的数据表

第一次建立数据模型,运行程序,自动建立数据库和数据表,并执行对应的初始化工作

数据模型

数据初始化

EF在LindAgile里的注册

数据库第一次被创建,数据表名的名称,可以控制它的单数和复数形式

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// 注意表单复数形式时,实体不能有下划线,必须是单词
       modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();
     }

其中__MigrationHistory表,它是数据变更的数据表,体现了数据库的历史

(2)开始数据迁移

这时,我们看解决方案里,没有migrations文件夹,因为这时你没有开启变更计划

当开启变更后,才会出现这个文件夹

 Enable-Migrations

然后在项目中就看到了migrations文件夹,它将存储我们数据库的变更记录

我们如果新添加了数据实体DO,或者修改了原来的实体,然后希望升级一个变更记录,可以使用add-migration 变更名(随便写)

然后在我们项目的Migrations目录会多一个变更文件,它以时间戳开头,我们在变更执行时,这个时间戳是它顺序执行的关键

(3)把模型的变更更新到数据库

同时,我们看一个数据表__MigrationHistory,它没有发生变化,这是因为我们没有把变更更新到数据库,如果希望更新到数据库,可以使用update-database来实现,如果不加版本号,默认更新的是最新的变更记录,它会包括之前的变更代码,在更新时它会与数据表__MigrationHistory里的变更记录进行对比,如果已经更新过了,就不会执行这个版本,而只会向后更新!

执行完成后,我们再看一下数据表的变化,它也会多一条最新的变更记录,以后我们再有数据表变更,就使用这个方法即可,EF-migration只要我们好好用,它只会使我们的开发便得更快捷!

(4)把模型的变更成SQL脚本,以便在生产环境中使用

Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration:init

上面代码执行后会生成一个SQL文件,我们拿这个文件可以到生产环境中去执行,就完成了数据库的更新!

希望本文对各位有所帮助!

EF架构~codeFirst从初始化到数据库迁移的更多相关文章

  1. EF架构~CodeFirst数据迁移与防数据库删除

    回到目录 本文介绍两个概念,防数据库自动删除,这是由于在code first模式下,当数据实体发生变化时,会对原来数据库进行删除,并将新数据表添加进来,但这对于我们的运营环境数据库,是万万不能接受的, ...

  2. 20.2.翻译系列:EF 6中基于代码的数据库迁移技术【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/code-based-migration-in-code-first.aspx EF 6 ...

  3. EF架构~CodeFirst生产环境的Migrations

    回到目录 Migrations即迁移,它是EF的code first模式出现的产物,它意思是说,将代码的变化反映到数据库上,这种反映有两种环境,一是本地开发环境,别一种是服务器的生产环境,本地开发环境 ...

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

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

  5. [翻译][MVC 5 + EF 6] 5:Code First数据库迁移与程序部署

    原文:Code First Migrations and Deployment with the Entity Framework in an ASP.NET MVC Application 1.启用 ...

  6. EF架构~CodeFirst模型下的数据初始化

    回到目录 我为什么会来 在传统的大型系统设计中,数据库建模是个比开发更早的环节,先有数据库,然后是ORM模型,最后才是开发程序,而这种模型在EF出现后发生了转变,而且有可能将来会被code first ...

  7. EF架构~CodeFirst自关联表的插入

    回到目录 这个文章对之前EF的一个补充,对于一些自关联表的添加,如果你建立了表约束确实有这种问题,一般主键为整形自增,父ID为可空,这时,在添加时如果不为ID赋值,结果就会出错. 错误: 无法确定依赖 ...

  8. 20.翻译系列:Code-First中的数据库迁移技术【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/migration-in-code-first.aspx EF 6 Code-First ...

  9. 5.翻译系列:EF 6中数据库的初始化(EF 6 Code-First 系列)

    原文地址:http://www.entityframeworktutorial.net/code-first/database-initialization-in-code-first.aspx EF ...

随机推荐

  1. input 显示/隐藏密码

    js代码: // 显示/隐藏密码 $('.open').on('click',function(){ if($("#psw").prop('type')=='password'){ ...

  2. [大数据]-Elasticsearch5.3.1+Kibana5.3.1从单机到分布式的安装与使用<1>

    一.Elasticsearch,Kibana简介: Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.无论在开源还是专有领域, Lucene可以被认为是迄今为止最先 ...

  3. OC—Setter、Getter

    一.本篇以Setter和Getter 来进行成员变量的赋值. 二.Setter 与 Getter 1. 命名规范 为对象中的某个实例变量赋值的方法称为修改方法,用来修改对象的状态这类修改方法称为set ...

  4. 关于for循环的几种经典案例

    由于for循环可以通过控制循环变量的初始值和循环结束条件来改变遍历的区间,所以在排序或者遍历的时候,利用for循环就比较简单,以下是本人学习后得到的一些总结案例. 1.排序的应用 1)交换排序:通过取 ...

  5. 如何使用.bas文件

    1. 确保你安装的是word 2010,打开word文档,,按ALT + F11打开VBE编辑器. 2.点击Normal,右键,在弹出的对话框中选择导入文件. 2. 选择需要使用的脚本的位置,然后点击 ...

  6. Zookeer-- 上搭建 hbase

    一.HBase的相关概念1.HBase的概念:大量数据进行随机近实时读写时使用Hbase.2.HBase是一个模仿Gootable's Bigtable的,开源的.分布式的.版本化的非关系型数据库.3 ...

  7. SparkMLlib学习分类算法之逻辑回归算法

    SparkMLlib学习分类算法之逻辑回归算法 (一),逻辑回归算法的概念(参考网址:http://blog.csdn.net/sinat_33761963/article/details/51693 ...

  8. jQ实现的一个轮播图

    众所周知,轮播图是被广泛的运用的. 轮播图我们在很多的网站上都可以看到,例如淘宝.京东这些网站都很常见. 下面开始我们的轮播之旅: 搭建我们的骨架: <!DOCTYPE html> < ...

  9. 【JAVAWEB学习笔记】27_Redis:在Linux上的安装、Jedis和常用命令

    一.Redis简介 1.关于关系型数据库和nosql数据库 关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据     库是基于特殊的结构,并将数据存储到内存的数据库.从性 ...

  10. 面试(4)-spring-Spring面试题和答案

    1:69道Spring面试题和答案 转自:http://ifeve.com/spring-interview-questions-and-answers/ 目录 Spring 概述 依赖注入 Spri ...