基本上你的兩點是正確的 - 除非你正在處理中央數據庫,否則當別人進行更改時,每個人都必須更新數據庫。如果您正在使用中央數據庫,則還可以進入數據庫更改的問題(即:刪除了一列),並且未檢入相應的源代碼。然後,你都死在水中,直到檢入源代碼或數據庫被回滾。使用中央數據庫也意味着開發人員無法控制何時將數據庫模式更改推送給他們。
我們已經安裝了每個開發人員的計算機上的數據庫(尤其是好的,因爲我們針對不同的數據塊,每個開發者都有支持的數據庫給我們真的很好的跨平臺測試,因爲我們去的一個)。
然後是「發展」環境指向的中央「發展」數據庫。它通過持續集成每個簽入來構建,並且在成功構建/測試時發佈到開發中。需要簽入到源控制
變化,開發商使他們的本地計算機上的數據庫架構。它們是數據庫升級腳本,用於對數據庫進行從版本X到版本Y的所需更改。數據庫是版本控制的。當客戶升級時,這些數據庫腳本將在其數據庫上運行,以將其從當前版本升級到他們正在安裝的所需版本。
這些dbpatch文件存儲在以下結構:
./dbpatches
./23
./common
./CONV-2345.dbpatch
./pgsql
./CONV-2323.dbpatch
./oracle
./CONV-2323.dbpatch
./mssql
./CONV-2323.dbpatch
在上述樹中,版本23具有被任何數據庫上運行一個共同dbpatch(是ANSI SQL),而對於一個特定dbpatch三個數據庫需要供應商特定的SQL。
我們有一個數據庫更新腳本,開發人員可以運行它運行任何尚未在其開發計算機上運行的dbpatch(不考慮版本 - 因爲在單個版本的開發過程中可能會委託多個dbpatches進行源代碼管理)。
連接字符串被保持在NHibernate.config,但是如果存在的話,NHibernate.User.config來代替,然而NHibernate.User.config從源控制忽略。每個開發人員都有自己的NHibernate.User.config,它指向他們的本地數據庫並設置適當的方言等。
當推到開發中時,我們有一個NAnt腳本,它在配置模板中爲我們執行變量替換。這個腳本在升級時以及在發佈包時使用。 NAnt腳本使用環境設置文件中的變量值填充模板配置文件。
謝謝,我明白了上面這些Web.Config轉換的文章,但它並沒有告訴我該把這個文件放在哪裏以及如何連接它。 – 2010-11-29 00:39:28
它在你的MVC項目的根目錄下自動創建。 – jfar 2010-11-29 00:50:06