2013-05-09 230 views
10

我使用實體框架代碼首先遷移了一段時間了,現在在一個全新的項目,他們已經在應用程序的主幹線版本工作正常爲止。實體框架遷移 - 管理分行

然而,我們現在是在在正在創建分支,因爲我們有多個工作正在進行該項目的一個點。作爲最後一部分工作的一部分,我們意識到跨分支機構遷移可能會產生問題 - 所以我的問題是人們如何找到最好的管理方式?

例如(我已經明顯地簡化了這些爲討論起見):

A分支: 顯影劑1增加了一個「添加-UserDateCreated」的遷移增加了一個字段向用戶實體。遷移文件包含添加字段的代碼,並且具有當時的模型狀態。

科B: 顯影劑2增加了一個「添加-UserMiddleName」遷移這增加了另一個字段的用戶實體。遷移文件包含添加字段的代碼,並且當時具有模型狀態(但顯然沒有在其他遷移中添加字段)。

這些遷移做工精細的分公司,但是當你把它們合併到主幹,您遇到:

  • 你不能只是保持個體遷移文件,存儲的模型狀態不會是正確的。例如,'Add-UserMiddleName'遷移應該添加'Add-UserDateCreated'字段的模型狀態 - 但它不會。
  • 您不能遷移合併成一個文件,你打了同樣的問題*

這意味着要忠實地避免這些問題的唯一方法是對數據庫的不同副本進行工作的每一個分支,在合併到主幹時忽略遷移,並且在合併完成時(在數據庫的主幹版本上)添加一次主遷移 - 但是那麼您可能最終在一次遷移中出現大量更改一個好主意(也會丟失您在遷移課程中編寫的任何自定義代碼)。

那麼其他人怎麼處理這種情況呢?我很想知道別人的意見。

*我很好奇,是什麼問題,這實際上在現實世界中造成的,如果有誰知道?

回答

5

當你工作的一個分支,需要遷移時,你總是需要考慮其他的(活動)分支的狀態。例如,如果在分支上沒有樹幹上的遷移,則應在創建新遷移之前將它們合併到分支。一旦你在分支上創建了遷移,將它合併回主幹可能是一個好主意。

所以在你的榜樣,開發者A和B需要相互通信。開發人員B意識到需要遷移,應該在創建「中間用戶名」遷移之前檢查是否已完成其他遷移並將其合併到她的分支。

我發現將遷移看作整個團隊的死鎖是很有用的(如果這對您有意義的話)。每天都應該提到新的遷移或創建它們的計劃。有時候,當事情忙碌時,將白板上的所有遷移列表保留給所有團隊成員看看會很有用。

我還發現,遷移是小提交是非常重要的,這使得它們可以輕鬆地在分支之間移植。

還應該指出的是,它有助於使用版本控制系統,例如與Git一樣,可以進行分支,合併和櫻桃採摘。

+0

感謝馬丁 - 這是做這件事的另一種有用的方式。我想我從來沒有想過如何像以前一樣合併這些變化,通常在所有變更合併到主幹後選擇重新構建所有遷移。我想問題是哪個方法更好? :) – stevehayter 2013-05-10 14:03:10