Database 什么是;“恢复自动迁移”;什么意思?
在源代码管理中更改分支后,运行更新数据库以回滚到以前的迁移,EF有时会显示文本“还原自动迁移”,如下所示:Database 什么是;“恢复自动迁移”;什么意思?,database,entity-framework-5,entity-framework-migrations,Database,Entity Framework 5,Entity Framework Migrations,在源代码管理中更改分支后,运行更新数据库以回滚到以前的迁移,EF有时会显示文本“还原自动迁移”,如下所示: Reverting automatic migration: 201305171619008_DescriptiveNameForMigration. Reverting code-based migration: 201305162023299_Init. 实体框架是如何确定迁移应该是自动的,它有什么不同之处 假设您有一个已经设置了代码优先迁移的项目,下面介绍了如何复制它: 切换到源代
Reverting automatic migration: 201305171619008_DescriptiveNameForMigration.
Reverting code-based migration: 201305162023299_Init.
实体框架是如何确定迁移应该是自动的,它有什么不同之处
假设您有一个已经设置了代码优先迁移的项目,下面介绍了如何复制它:
- Update Database枚举迁移历史记录中的迁移
- 它在项目中找到相应的迁移文件并调用Down()方法
- 如果相应的迁移文件不存在,那么它将根据_MigrationHistory中的快照对如何回滚迁移进行最佳猜测
希望这能让事情变得更清楚。我认为您描述的情况发生得很好。代码中的down方法是否恢复到原来的状态?然后,它有一个路径来获取MigrationHistory表中的版本。你不这么认为吗?是的,如果存在用于迁移的代码文件,那么它将使用Down()方法。我想知道当被恢复的迁移不存在代码文件时,“恢复自动迁移”是如何工作的。(这可能适用于一个新的SO问题。)您也认为“恢复自动迁移”意味着它会动态生成Down()方法?最好知道,当自动迁移检测到没有相应迁移文件的更改时,会记录自动迁移。到目前为止,我只注意到自动消息和基于代码的消息混合在一起,而不支持更改。谢谢您提供的详细信息。:)