因此,当我没有同步的数据库(事实上,直到最近的迁移,根本没有数据库)并且已经对我的模型进行了实质性的更改时,我在尝试生成迁移时遇到了一个基本问题。
以下是具体细节:
- 有一系列明确的迁移
- 没有数据库。简而言之,有很多悬而未决的更改
- 对模型/上下文进行了更改
- 当尝试添加迁移时,它会抱怨说显式迁移正在挂起
- 如果我尝试通过更新数据库或migrate.exe执行迁移(并使我的数据库同步),它将失败(在成功应用显式迁移之后),并且不会启用自动迁移
- 我也不想启用自动迁移(以防止任何架构更改在代码中被提交和下落不明。)
我意识到在#5失败之后,我现在可以运行#4了。然后重新尝试#5,瞧。
我的问题是,这是否是解决这种愚蠢情况的预期方法。
我将使用以下方法。
首先需要应用迁移并指定最后一个迁移
PM> Update-Database -TargetMigration AnyMigrationName
# It updates database to a migration named "AnyMigrationName"
# This will apply migrations if the target hasn't been applied or roll back migrations
# if it has
本地数据库更新后,只需添加新的迁移即可
PM> Add-Migration NewMigrationName
# it scaffolds a new migration named "NewMigrationName"
为了寻找一个好的参考,我发现了这些关于EF迁移的博客文章,它们可以帮你很多忙。它们涵盖了许多问题,特别是EF迁移和合并冲突以及EF迁移命令参考。
当有许多迁移挂起时,会显示此错误。
如果不需要现有迁移,请首先删除(排除)所有迁移迁移文件夹,然后添加新的迁移。
Add-Migration new