我读到使用__MigrationHistory
表格solely by EF。
我有一个团队在同一个项目上工作,我们总是遇到应用程序中版本控制文件 EF6 创建的问题,我每次创建迁移时都必须删除它们,有人创建了另一个在我之前(与其他团队成员一样)。
有没有办法仅使用__MigrationHistory
表中的数据来恢复以前版本的数据库模式?或者,如果没有在应用程序中创建 EF6 的版本控制文件?
答案 0 :(得分:2)
干净的方法是正确定义迁移文件中的Down()
方法。然后,您可以使用以下命令返回到某个版本的DB:
Update-Database -TargetMigration <Name of last migration to be applied>
有时,您也可以通过在两次迁移之后添加空迁移来使EF感到高兴,并且#34;合并&#34;。这个空迁移就在那里,所以EF可以更新其内部状态并正确地将其写入_MigrationHistory。这应该摆脱&#34;无法更新数据库以匹配当前模型,因为存在挂起的更改并且禁用了自动迁移。&#34;错误。
为了防止您所描述的并行创建迁移问题,我们始终使用以下过程:
Update-Database
Add-Migration
添加迁移,并定义Down()
方法请注意,每个DbContext都会跟踪模型更改,因此也许可以将DbContext拆分为每个团队的一个单独的上下文。这将导致每个DbContext的一组迁移,即团队。