我有一个我最近使用创建的数据库的本地实例DbContext.Database.Create()
,因此该__MigrationHistory
表存在一个InitalCreate
与当前代码匹配的条目。
但是,Migrations 文件夹中存在一些基于代码的迁移。这些将在我们的开发和登台环境中运行,以使这些数据库与代码保持一致。但是,我不需要在本地应用它们,因为我使用当前代码创建了数据库。
我现在需要对模型进行更改并创建相应的迁移。但是当我运行时Add-Migration TestMigration
,出现以下错误
Unable to generate an explicit migration because the following explicit
migrations are pending:
[201203271113060_AddTableX,
201203290856574_AlterColumnY]
Apply the pending explicit migrations before attempting to generate
a new explicit migration.
在这种情况下我该怎么办?我不能将 Add-Migration 工具指向另一个环境,因为不能保证版本与我在本地拥有的版本相匹配。我想要一个只匹配我所做更改的迁移。
似乎我有几个选择,但没有一个是理想的:
- 从 Migrations 文件夹中删除其他迁移,运行 Add-Migration 命令,升级数据库,然后恢复旧迁移。这很简单,但似乎有点骇人听闻。
- 恢复到应用第一次迁移的源代码控制中的模型版本,然后构建它并使用它来创建数据库。然后获取最新版本,应用所有迁移,然后我就可以添加我的迁移了。这似乎是一个很大的努力!
- 手动创建迁移。
有人对如何管理这个有任何建议吗?