• [2014-11-02]为EF6+Mysql+CodeFirst启用Migration



    刚为一个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方法,否则数据库结构将无法回滚。
  • 相关阅读:
    暴破助攻提权:ruadmin
    Python 绝技 —— TCP服务器与客户端
    代码审计| HDWiki 漏洞(一)
    Android逆向——smali复杂类解析
    从外部入侵公司:外部渗透测试
    大脸猫讲逆向之ARM汇编中PC寄存器详解
    Ms17-010进行WEB提权之实践下某培训靶机服务器
    XSS钓鱼某网约车后台一探究竟,乘客隐私暴露引发思考
    python爬虫实践教学
    Swif语法基础 要点归纳(一)
  • 原文地址:https://www.cnblogs.com/personball/p/7455867.html
Copyright © 2020-2023  润新知