zoukankan      html  css  js  c++  java
  • Efcore迁移

    Efcore迁移

    Add-Migration XX:
    1、根据模型的实际结构对比当前快照,从而生成新迁移文件的Up和Down方法
    2、根据模型的实际结构修改快照和新迁移文件
    -----------------
    Remove-Migration
    一、我们定义:
    1、最后一次的迁移文件,称为:A
    2、倒数第二次的迁移文件,称为:B

    二、判断:
    1、快照和A是不同的:将快照恢复成A,结束
    2、快照和A是相同的:删除A,将快照恢复成B,结束
    -----------------
    Update-Database
    1、数据库__EFMigrationsHistory中MigrationId字段和迁移文件做对比
    2、更新所有新于MigrationId字段的迁移
    3、更新后的迁移不可Remove
    4、如果要Remove已经更新的数据库操作,可以使用Update-Database XX指定恢复到哪个历史版本(请注意数据安全)

    特殊情况:
    一、如果不小心删除快照文件
    1、先从他处复制一个空快照文件到项目中
    2、执行Remove-Migration,可恢复快照文件到上次迁移的状态
    (如有过模型修改,可再执行以下)
    3、执行Add-Migration XX,生成新的迁移文件
    4、Update-Database,执行更新

    二、如果不小心手动删除迁移文件

    第一种:

    1、手动去数据库里修改对应结构
    2、删除所有迁移和快照后,从此刻重新开始依赖迁移功能

    第二种:

    1、把模型的状态恢复到和数据库同步

    2、删除所有的迁移文件和快照

    3、执行Add-Migration XX,重新生成快照和迁移文件

    4、手动删除XX文件

    5、修改模型为最新版本

    6、再一次执行Add-Migration XX,并Update-Database

    所以,迁移文件和快照特别重要,在未更新本地开发数据和最终数据前,千万不要手动删除!
    要清理迁移文件前,请三思三思再三思!

  • 相关阅读:
    PostgreSQL pg_ident.conf 文件简析
    使用 iptables 限制黑客猜密码续—深入 recent 模块
    从零开始安装 Drupal 7
    使用tween.js移动three.js相机创建转场动画
    容器化导致RocketMQ消息囤积的原因和解决方案
    linux序章(第一集)
    使用DockerFile 构建nginx镜像
    git的常用指令
    使用docker起一个mysql服务
    Windows 8自动登录
  • 原文地址:https://www.cnblogs.com/yeagen/p/11737231.html
Copyright © 2011-2022 走看看