2009-12-14 59 views
1

背景: 我的大部分程序都使用表格適配器,連接字符串存儲在應用程序設置中。這工作正常,但是從開發切換到生產環境時是一個真正的PITA。在任何應用程序開始工作之前和之後,我都必須手動更改連接字符串。如何檢索tableadapters列表?

經過一番研究,我發現如何動態切換表格適配器的連接字符串。通過簡單地爲connectionString添加一個自定義屬性,我能夠實現這一目標。但我仍然需要在每個應用程序的新事件中添加代碼,以便連接字符串在加載時進行切換。 (我的連接字符串保存爲一個常用DLL中的應用程序屬性設置,我只是在本地保留了一個連接字符串的DLL副本,並且在生產服務器上保留了一個與生產連接字符串的DLL副本。)

新的問題

我想進一步藉此一步,要麼有數據集更改所有表適配器的連接字符串,他們每一個都包含在它們的加載使用新的事件,還是從同一VB模塊。我一次最多可以有3個數據集。

我確實很依賴intellisense來幫助我確定哪些方法和屬性可用,但我無法找到一種方法來檢索我的數據集中的表適配器列表。據我所知,它似乎並不是任何對象集合的一部分。我已經搜索了一點點的解決方案,但沒有運氣。

Marshall

+0

當你說*我的連接字符串保存爲一個常見的DLL中的應用程序屬性設置*,你的意思是嵌入在一個DLL?或者作爲該DLL的應用程序設置? – 2009-12-14 16:45:32

+0

作爲該DLL的應用程序設置 – Marshall 2009-12-14 20:29:51

+0

該DLL有一個方法,在調用時,應用程序設置中的連接字符串被複制到我在DLL中設置的一些公共變量。這就是我如何訪問新的連接字符串。 – Marshall 2009-12-14 20:32:42

回答

1

您可能需要重新配置連接字符串的位置。使您的表示層(即應用程序)在其app.config中包含連接字符串。現在,這裏是最酷的部分...應用程序正在使用的任何.DLL都可以使用ConfigurationManager.ConnectionStrings(「MyConnectionString」)來訪問應用程序的app.config。ToString函數。您的.DLL會通過名稱調用連接字符串,並將調用傳播到應用程序的app.config。如果您不想硬編碼「MyConnectionString」,那麼您應該簡單地通過對象的屬性將連接字符串傳遞給.DLL。

如果您不想重新排列連接字符串「所有權」,只需通過應用程序可以讀取的.DLL中的靜態對象將.DLL的連接字符串從它自己的配置文件中暴露出來即可。將它分配給TableAdapters。作爲一個方面說明,如果您已經熟悉並習慣似乎是您的自定義DLL的問題,那麼將所有的數據訪問邏輯作爲數據訪問層(DAL)移動到它自己的DLL中 - 獲取數據訪問邏輯脫離表現層!