我有我使用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