刚为一个EF6 CodeFirst项目启用了Migration,记几个注意点。

启用方法

在Nuget控制台使用以下命令启用Migration

Enable-Migrations #此时生成当前数据库结构的基本架构
Add-Migration #此时生成了数据库结构具体变动的代码
Update-Database #将修改应用到数据库,-Verbose选项可查看相关的sql语句

Tips

  1. 在应用Enable-Migrations命令时,请选择YourDbContext所在的项目,如果该项目是独立的一个类库,要注意配置App.config。Mysql场景下,需覆盖entityFramework配置节,并提供connectionStrings配置节,否则Enable-Migrations生成的InitialCreate基本架构(以数据库中的__migrationhistory记录为基准)会不准,且可能遇到提示实体中存在循环引用异常。
  2. 如果之前的开发使用了DropCreateDatabaseAlways之类的database initializer,在启用Migration后,可以关闭所有原先数据库初始化相关的配置。改为在YourDbContext的OnModelCreating方法中用Database.SetInitializer指定始终迁移到最新版的数据库结构(如果有其他配置代码,比如modelBuilder.Configurations.Add,请将Database.SetInitializer置于最后)。并将原先Seed方法中的代码转移到Migrations文件夹下的Configuration中的Seed方法中,并注意为每一步具体的Seed添加条件判断以防止重复添加初始化数据(每次数据库结构迁移都会运行configuration下的Seed方法,而DropCreateDatabaseAlways之类的初始化策略仅执行一次)。
  3. 在第2步指定了Database.SetInitializer后,则无需手动运行Update-Database。
  4. 非常重要,每次修改实体后,执行Add-Migration,如果生成的迁移代码需要自定义,则一定要仔细确定提供了正确的Up方法和Down方法,否则数据库结构将无法回滚。

[2014-11-02]为EF6+Mysql+CodeFirst启用Migration的更多相关文章

  1. EF6 CodeFirst 启用Migration,常用命令

    Enable-Migrations –EnableAutomaticMigrationsAdd-Migration [MigrationName] [-Force]Update-Database –T ...

  2. EFCore + MySql codeFirst 迁移 Migration出现的问题

    第二次使用Migration update-database的时候出现以下错误: System.NotImplementedException: The method or operation is ...

  3. [实战]MVC5+EF6+MySql企业网盘实战(11)——新建文件夹2

    写在前面 上篇文章实现了创建文件夹的功能,这里面将实现单击文件夹,加载列表的功能. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网 ...

  4. https://blog.newrelic.com/2014/05/02/25-php-developers-follow-online/

    w https://blog.newrelic.com/2014/05/02/25-php-developers-follow-online/ 1. Rob Allen. Zend Framework ...

  5. [实战]MVC5+EF6+MySql企业网盘实战(28)——其他列表

    写在前面 本篇文章将实现,其他文件类型的列表. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战]MVC5+EF ...

  6. [实战]MVC5+EF6+MySql企业网盘实战(27)——应用列表

    写在前面 本篇文章将实现应用列表,同样和其他列表的不同之处,在于查询条件的不同. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘 ...

  7. phpStudy + JspStudy 2014.10.02 下载

    phpStudy + JspStudy 2014.10.02 下载 目标:让天下没有难配的php环境. phpStudy Linux版&Win版同步上线 支持Apache/Nginx/Teng ...

  8. [实战]MVC5+EF6+MySql企业网盘实战(26)——音乐列表

    写在前面 本篇文章将实现,音乐列表,同样和其他列表的不同之处,在于查询条件的不同. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网 ...

  9. [实战]MVC5+EF6+MySql企业网盘实战(25)——种子列表

    写在前面 上篇文章实现了视频列表,本篇文章继续实现其他的文件列表.功能相似.这里就不再赘述. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MyS ...

随机推荐

  1. 将域名转移到 Google Domains

    之前存放域名用过 Godaddy.Dynadot.Namesilo 也有阿里云(万网)和腾讯云(新网),这回就用 Google Domains 啦! 话说 Google Domains 早已是 201 ...

  2. Java中使用POI读取大的Excel文件或者输入流时发生out of memory异常参考解决方案

    注意:此参考解决方案只是针对xlsx格式的excel文件! 背景 前一段时间遇到一种情况,服务器经常宕机,而且没有规律性,查看GC日志发生了out of memory,是堆溢出导致的,分析了一下堆的d ...

  3. 51nod 1008 N的阶乘 mod P

    输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)   例如:n = 10, P = 11,10! = 3628800 3628800 % 11 = 10   Input 两 ...

  4. [Usaco2007 Open]Fliptile 翻格子游戏

    [Usaco2007 Open]Fliptile 翻格子游戏 题目 Farmer John knows that an intellectually satisfied cow is a happy ...

  5. Java ee 与安卓环境搭建个人心得

    最近加了个IT俱乐部,第一次作业就是搞定eclipse,完成Java ee 与安卓环境搭建.为此我上网看了好多教程,之前我安装了Java,可以说省了不少事,而且还了解一点安装方法.流程网上都有,但是不 ...

  6. zzuli--2134: 维克兹的进制转换(规律)

    2134: 维克兹的进制转换 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 287  Solved: 63SubmitStatusWeb Board D ...

  7. NYOJ--122--Triangular Sums

    Triangular Sums 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 The nth Triangular number, T(n) = 1 + - + n ...

  8. oracle函数和存储过程有什么区别

    oracle函数和存储过程有什么区别 1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用. 函数 ...

  9. HDU 3625 Examining the Rooms:第一类stirling数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3625 题意: 有n个房间,每个房间里放着一把钥匙,对应能开1到n号房间的门. 除了1号门,你可以踹开任 ...

  10. python学习之while 和for循环

    while 和for循环 一般格式while <test>: <statment>;else: <statment>; else 部分为可选部分,(控制权离开wih ...