我有我使用DbContext.Database.Create()
最近建立了一个数据库的本地实例,所以__MigrationHistory
表的InitalCreate
条目的代码的时刻匹配存在。让EF4.3代码首先迁移忽略挂起的迁移
一些基于代码的迁移在迁移文件夹中存在,但是。这些将在我们的开发和分期环境中运行,以使这些数据库符合代码。但是,我不需要在本地应用它们,因为我使用当前代码创建了数据库。
我现在需要做出改变的模型,并创建相应的迁移。但是,当我运行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-迁移命令,升级数据库,然后恢复旧的迁移。这很简单,但似乎有点ha。。
- 恢复到首次迁移应用到的源代码管理模型的版本,然后构建并使用它创建数据库。然后获取最新版本,应用所有迁移,然后我准备好添加我的迁移。这似乎是一个很大的努力!
- 手动创建迁移。
有没有人有关于如何管理这个有什么建议?
这不起作用,因为以前的迁移操作无法在使用'DbContext.Database.Create()'创建的数据库上运行。想象一下添加一列的迁移,但是在你的新本地数据库中你已经有了这个列,所以你得到一个'SqlException'并且相关的行不会被添加到'__MigrationHistory'表中。看到我的答案,我认为是正确的方法。 – 2013-11-05 15:53:15