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