Efcore迁移
Posted yeagen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
所以,迁移文件和快照特别重要,在未更新本地开发数据和最终数据前,千万不要手动删除!
要清理迁移文件前,请三思三思再三思!
以上是关于Efcore迁移的主要内容,如果未能解决你的问题,请参考以下文章
EFCore + MySql codeFirst 迁移 Migration出现的问题