Dot-Net

在不同的 TFS 分支上工作時失去 EF 程式碼優先遷移?

  • April 16, 2012

我們正在使用 TFS,並且我們的 Dev 有不同的分支。

  1. 在分支 A 中,我們進行了遷移以更改列大小
  2. 在分支 B 中,我們進行了遷移以添加新表。這個分支不知道分支A的修改!!
  3. 兩個修改都合併到主分支。

當我更新數據庫時,它會進行 2 次遷移,但最後告訴我有待處理的更改。如果我進行添加遷移,它會創建與第一次遷移相同的內容(在分支 A 中)。

無法更新數據庫以匹配目前模型,因為存在待處理的更改並且自動遷移已禁用。將掛起的模型更改寫入基於程式碼的遷移或啟用自動遷移。將 DbMigrationsConfiguration.AutomaticMigrationsEnabled 設置為 true 以啟用自動遷移。您可以使用 Add-Migration 命令將掛起的模型更改寫入基於程式碼的遷移。

是否因為我上次遷移的屬性 Target de IMigrationMetadata 的內容中缺少某些內容,因為它不知道第一個遷移?

是否可以在不同的 TFS 分支中處理遷移?

EF 遷移步驟包含一個元數據文件,該文件具有模型簽名,該簽名是遷移步驟的結果。合併時的問題是在分支 B 中完成的遷移的簽名不包括在分支 A 中的遷移中完成的內容。只要遷移在分支中,這是正確的。合併時會出錯。

為了解決這個問題,您必須重新生成後者遷移的元數據

add-migration MyMigrationName

add-migration在沒有參數的現有遷移上執行-force將僅重新生成元數據。

我在EF 遷移和我的部落格上的合併衝突文章中寫了一個合併場景的深入演練。

引用自:https://stackoverflow.com/questions/10171658