2015-04-27 21 views
1

我有一個實體框架5 DB-First項目,我們現在剛剛從TFS遷移到Git。在TFS中,我們使用RedGate的SQL Source Control來保持數據庫的最新狀態,這是一種很好的做法,假設每個人都在發展主幹,因爲分支是如此困難,所以幾乎每個人都在研究最新版本的數據庫架構。如何在首先使用db時管理不同分支中的數據庫模式更改?

但是,現在我們使用Git了,我希望數據庫更改成爲功能分支的一部分。由於Git允許從分支到分支的這種輕鬆跳躍,我希望開發人員可以從包括數據庫更改在內的功能跳轉到沒有這些更改的功能。代碼更新得很好 - 但是數據庫呢?我懷疑RedGate的產品會在這樣的一個閃存中處理上下遷移 - 或者我錯了嗎?如果RedGate無法處理這些上下遷移,那麼在我的代碼中做正確的方法是什麼?

順便說一句,我沒有搜索其他類似的問題,並找到this one,雖然答案是包括在功能分支遷移腳本。對於「向上」遷移而言,這一切都非常好,但是如果我是在一個分支中編寫功能,那麼我切換到另一個分支來對其他人的請求進行代碼審查,然後對我做出的更改我的分支中的本地數據庫應該以某種方式恢復。但是如何?

更新: RedGate通過引用this article回覆支持電話。基本上,如果你想切換分支,你必須取消鏈接/重新鏈接你的數據庫從源代碼管理。而且你不能創建或合併分支。總之,呃。有更好的建議嗎?

回答

1

目前爲止我發現的最佳解決方案來自RedGate - 它們的Migrations V2 Beta。您可以在每個分支中進行提交,並且在分支之間切換時,您可以在數據庫選項卡上選擇「獲取最新」,以將本地數據庫更新爲適用於該分支的數據庫模式。

它的工作原理確定病例的80%,但它(還)沒有一個完美的解決方案

  • 如果轉換分支到以前的版本之前的遷移模式的,有沒有辦法運行「下來」腳本。
  • 當您啓用FILESTREAM時,系統會有點bug。我已經向他們的技術支持彙報了這一點,他們已經承認了這個錯誤,所以希望這個問題很快就會被解決。

基本上,它有一個被稱爲「Beta」的原因。

無論如何,我現在將此標記爲解決方案,但如果有人提出了一個更好的主意,那麼讓我們來聽聽它。

0

確實是一個單調乏味的問題。我目前使用單獨的文件夾爲每個主要分支(開發,發佈和增強),這迫使我對每一個主要分支

  • 每一個主要分支配置做以下

    • 數據庫連接到相應的數據庫。對於單元測試和一般開發
    • Web服務器也針對每個分支進行配置。例如。 http://localhost/develop

    因爲配置文件,合併有點繁瑣,但這項技術迄今已運行了幾年。

  • 相關問題