刚为一个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. 用subline text写PHP后台服务器POST请求

    1 运行XAMPP程序,看到Apache Web Server 是Running状态即可 2 打开Subline text ,新建一个PHP文件,选择保存路径:应用程序->XAMPP->h ...

  2. javaBean与Servlet学习

    1.JavaBean JavaBean将java代码单独封装成了一个处理某种业务逻辑的类,可以降低HTML与Java代码的耦合度,并且简化JSP页面,提高Java程序代码的重用性及灵活性. JavaB ...

  3. Jsp运行环境——Tomcat

    JSP JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1] 是由Sun Microsystems公司倡导.许多公司参与一起建立的 ...

  4. Android学习笔记-App初始启动界面实现

    android手机上的很多应用程序启动时都会先显示一个图片,作为该应用程序的开始,该图片转瞬即逝.这个图片一般都会用应用的图标,作为广告来用. 例如: 它的实现方式很简单,我们以一个测试APP为例,介 ...

  5. Numpy 操作

    一.Numpy 属性 # 列表转化为矩阵 In []: arr = np.array([[,,],[,,]]) In []: arr Out[]: array([[, , ], [, , ]]) 1, ...

  6. Spring+SpringMVC+MyBatis+easyUI整合

    进阶篇 Spring+SpringMVC+MyBatis+easyUI整合进阶篇(一)设计一套好的RESTful API 优化篇 Spring+SpringMVC+MyBatis+easyUI整合优化 ...

  7. nstallation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED报这个错的原因???

    [2015-06-05 20:37:51 - 05ListView列表控件] ------------------------------ [2015-06-05 20:37:51 - 05ListV ...

  8. 分享一道JS前端闭包面试题

    输出以下代码的结果 function fun(n,o){ console.log(o); return { fun:function(m){ return fun(m,n);//[1] } } } v ...

  9. 推荐——基于python

    资料来源: <集体智慧编程>&网络 一.推荐系统 概述 定义 维基百科定义: 推荐系统属于资讯过滤的一种应用. 推荐系统能够将可能受喜好的资讯或实物(例如:电影.电视节目.音乐.书 ...

  10. 多人开发的git项目如何保持提交日志为一条直线?

    多人开发的git项目如何保持提交日志为一条直线? 一.Git的项目的git常用操作 a)Git clone 项目地址 从远程仓库克隆项目到本地 b)Git pull 从当前分支拉取更新代码 c)Git ...