2009-07-03 89 views
0

我創建了一個類庫,其中包含三個數據庫的其他類必須連接的三個實體模型。這個類庫然後被三個不同的Web服務和一個網站使用。這些都安裝在他們自己的服務器上,所以沒有簡單的方法讓他們共享相同的連接數據。切換連接字符串

在我的web.config文件,我這一行:

<connectionStrings configSource="Dependencies.ConnectionStrings.Config"/> 

這將從一個單獨的XML文件中加載連接字符串。它工作正常,但它也意味着我現在有5個不同的這個Dependencies.ConnectionStrings.Config文件的副本。我寧願在開發過程中使用單個文件。

但是,我的解決方案還包含四個安裝項目,在這些設置中,配置文件必須彼此相鄰。

那麼如何告訴VS在不修改web.config的情況下在多個項目之間共享單個配置文件呢?


爲了使它稍微複雜一點,類庫使用app.config來存儲連接字符串。我無法告訴app.config將連接字符串鏈接到單獨的配置文件,顯然... 另一個複雜因素是連接字符串需要在安裝後由系統管理員修改。這是因爲它將不得不尋找與開發數據庫不同的數據庫。 (實際上,在開發過程中,我使用3個數據庫來分割實體邏輯,測試和生產環境只使用一個數據庫。)
我目前的解決方案很簡單。我已將Dependencies.ConnectionStrings.Config文件添加到解決方案中的單獨文件夾,並定期將其拖放到其他項目中以更新它們。雖然這個工作,它是容易出錯...

回答

1

最大的問題是你不能在文件夾層次當前主要的配置文件,這使其分享這些困難鏈接配置文件。

你有沒有考慮過把它放在配置層次結構的更高層 - 可能在root web.config或machine.config?

另一種方法是讓一些預構建事件構建這些文件,因此您不必擔心有多個副本。當我需要爲每個開發人員創建不同的連接字符串時,我已經非常成功地使用了prebuild選項。

+0

根web.config也是一個很好的位置,但連接字符串有時會在開發和測試期間更改。修改簡單的XML文件對於那些對IIS本身沒有任何經驗的測試人員來說更容易一些。 (這就是爲什麼我需要創建設置。) – 2009-07-03 08:02:19

1

我不知道是否可以在不修改文件的情況下執行所要求的操作。

我同意這將是如果你有可能被所有服務器上使用一個文件要好得多,那麼你將不會有版本問題,等等

說實話,整個安裝聽起來很複雜,如果說錯誤的配置文件結束在錯誤的服務器上,可能容易出錯。

我會試圖將連接信息集中在共享數據庫中。您可以記錄每個服務器應該使用的連接字符串(存儲在服務器名稱中)。這樣每個服務器就知道它應該使用哪個連接字符串。這當然假定你的服務器可以聯繫一箇中央數據庫服務器(取決於你的設置)。

當然,還有其他方法可以獲得理想的效果,但是我認爲如果您「自己推出」而不是嘗試彎曲內置應用程序設置以實現自己想要的效果,則可以獲得更優雅的解決方案。