数据库 – “还原自动迁移”是什么意思?
在源代码管理中更改分支之后,运行Update-
Database回滚到以前的迁移,EF有时会显示文本“还原自动迁移”,如下所示:
Reverting automatic migration: 201305171619008_DescriptiveNameForMigration. Reverting code-based migration: 201305162023299_Init. 实体框架如何确定迁移应该是自动的,它有什么不同? 以下是如何重现它,假设您有一个已经设置了代码优先迁移的项目: >切换到源控件中的新分支 这是我认为的情况,如果我错了,请纠正我. >更新 – 数据库枚举__MigrationHistory中的迁移 解决方法当您构建迁移时,Entity Framework将在__MigrationsHistory中记录的最后一个模型与当前模型之间执行diff,并创建一个包含该diff的迁移类.您可以自由地编辑脚手架迁移的Up和Down方法.自动迁移让您跳过脚手架.如果它们已启用,并且调用Update-Database,它将执行当前模型和__MigartionsHistory中记录的最后一个模型的差异,并使用“自动”迁移应用该diff.自动迁移仍然在__MigrationHistory中获得记录,但不会将任何迁移类添加到项目中.差异的步骤与Up方法中的脚本相同,但是从来没有机会自定义它. 当您还原其中一个自动迁移时,它会执行其已记录的模型的差异以及之前迁移的模型.这些步骤与脚手架的Down方法相同. 如果实体框架找不到用于迁移的迁移类,则它假定它是自动迁移.因此,如果您自定义了Down方法,则在还原期间不会应用这些自定义. 希望这让事情变得更清楚一些. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |