加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

数据库 – “还原自动迁移”是什么意思?

发布时间:2020-12-12 16:31:03 所属栏目:MsSql教程 来源:网络整理
导读:在源代码管理中更改分支之后,运行Update- Database回滚到以前的迁移,EF有时会显示文本“还原自动迁移”,如下所示: Reverting automatic migration: 201305171619008_DescriptiveNameForMigration.Reverting code-based migration: 201305162023299_Init. 实
在源代码管理中更改分支之后,运行Update- Database回滚到以前的迁移,EF有时会显示文本“还原自动迁移”,如下所示:
Reverting automatic migration: 201305171619008_DescriptiveNameForMigration.
Reverting code-based migration: 201305162023299_Init.

实体框架如何确定迁移应该是自动的,它有什么不同?

以下是如何重现它,假设您有一个已经设置了代码优先迁移的项目:

>切换到源控件中的新分支
>更改模型,映射器并添加迁移
更新数据库
>切换回默认分支
>更新数据库 – 目标迁移:0 -Force
>请参见Update-Database命令的结果中的“还原自动迁移”

这是我认为的情况,如果我错了,请纠正我.

>更新 – 数据库枚举__MigrationHistory中的迁移
>它在项目中找到相应的迁移文件,并调用Down()方法
>如果相应的迁移文件不存在,那么它将根据__MigrationHistory中的快照执行关于如何回滚迁移的最佳猜测

解决方法

当您构建迁移时,Entity Framework将在__MigrationsHistory中记录的最后一个模型与当前模型之间执行diff,并创建一个包含该diff的迁移类.您可以自由地编辑脚手架迁移的Up和Down方法.

自动迁移让您跳过脚手架.如果它们已启用,并且调用Update-Database,它将执行当前模型和__MigartionsHistory中记录的最后一个模型的差异,并使用“自动”迁移应用该diff.自动迁移仍然在__MigrationHistory中获得记录,但不会将任何迁移类添加到项目中.差异的步骤与Up方法中的脚本相同,但是从来没有机会自定义它.

当您还原其中一个自动迁移时,它会执行其已记录的模型的差异以及之前迁移的模型.这些步骤与脚手架的Down方法相同.

如果实体框架找不到用于迁移的迁移类,则它假定它是自动迁移.因此,如果您自定义了Down方法,则在还原期间不会应用这些自定义.

希望这让事情变得更清楚一些.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读