我有一個ASP.NET項目。自然,通過不同的版本和開發分支,數據庫模式會發生變化。在ASP.NET中處理版本分支/回滾之間的數據庫更改
有什麼方法以友好的方式乾淨地處理模式更改,以便我可以輕鬆地在開發分支之間切換?
我使用SQL Server 2005,但一般技術可能工作。
我有一個ASP.NET項目。自然,通過不同的版本和開發分支,數據庫模式會發生變化。在ASP.NET中處理版本分支/回滾之間的數據庫更改
有什麼方法以友好的方式乾淨地處理模式更改,以便我可以輕鬆地在開發分支之間切換?
我使用SQL Server 2005,但一般技術可能工作。
跟蹤一個開發項目的多個分支的模式變化的一個好方法是遵循database refactoring過程。除了其他好處外,這種過程還包括使用增量和遷移腳本將架構更改應用於每個環境(或您的案例中的分支)。該設置可以是這個樣子:
main
src <-- ASP.NET project source
db <-- Database create scripts
delta <-- Database change scripts (SQL delta files)
branch
src
db <-- usually has the same contents as the copy in main branch
delta <-- only the changes necessary for this branch
每當你需要改變數據庫模式爲你創建一個用於應用變化的SQL腳本三角洲特定分支的時間。爲了方便起見,我建議命名每個腳本文件以包含創建日期和時間以保持順序。示例如下:
201102231435_addcolumn.sql
201102231447_addconstraint.sql
201103010845_anotherchange.sql
將delta文件添加到需要進行模式更改的分支中的源代碼管理。您應該最終確定每個分支包含更改相應數據庫所需的內容。有些細節可能需要根據您的情況進行調整,具體取決於您的分支方案以及您的數據庫在發佈過程中是否保留(而不是重新創建)。
最後,爲了嘗試使這些概念變得簡單,我會推薦一個工具來幫助管理流程。我的建議是看看DBDeploy/DBDeploy.NET。我在我的所有項目上都很開心地使用它多年。
我們將源代碼管理中的架構更改放置在該版本的其餘代碼部署的相同位置。
@我很困惑,你的意思是你偶爾會改變你的數據庫模式,並且不想知道處理更新訪問數據庫的代碼的最佳方式嗎? – 2011-02-24 19:15:25
不是訪問數據庫的代碼。模式自身發生變化。 – 2011-02-24 19:48:32
我只是想知道爲什麼沒有人像rails遷移一樣獲得這個權利?我知道亞音速3刺傷它,但(見AutoMigrations)它不是完美的......爲什麼我們沒有.net/c#等這個? – jonezy 2011-02-24 20:28:15