2009-08-04 79 views
4

我最初在我的網站的App_Code文件夾中編寫了一個數據訪問層。然後我們在一個單獨的項目中開發了一個Web服務。爲了使網站和Web服務都可以訪問相同的DAL,我將它移到了不同​​的項目中。我有一個包含tableadapters的數據集,爲了讓DAL項目編譯,我必須將連接字符串添加到應用程序屬性設置中。但這意味着我必須爲每個部署重新編譯DAL。另外,我可能在使用相同DAL的服務器上有2個或3個網站。所以我想在每個網站的web.config中設置連接字符串並將其保留。 每次我創建一個tableadapter的實例時,是否必須通過我的代碼並進行更改? 例如從連接字符串與DAL在單獨項目中的問題

using (MessageQueue adaptor = new MessageQueue()) 
{ 
    return adaptor.GetMessages(UserId, MobileId, StartDate, EndDate); 
} 

using (MessageQueue adaptor = new MessageQueue()) 
using (OracleConnection connection = new OracleConnection(OracleUtilities.ConnectionString)) 
{ 
    adaptor.Connection = connection; 
    return adaptor.GetMessages(UserId, MobileId, StartDate, EndDate); 
} 

還是有更好的辦法?

科林

回答

3

我發現我在這裏尋找答案:

Guidance needed ASP.Net app connection string

由s_ruchit答案

web.config中的連接字符串名稱必須與app.config中的連接字符串名稱相匹配 - 它包含完全限定的名稱。所以在我的情況下,我改變

<add name="ConnectionStringMainDB" 
    connectionString="<myConnStringHere>" 
    providerName="System.Data.OracleClient"/> 

到:需要

<add name="DatabaseAccess.Properties.Settings.ConnectionStringMainDB" 
    connectionString="<myConnStringHere>" 
    providerName="System.Data.OracleClient"/> 

沒有其他代碼的變化!感謝穆罕默德和更新鮮

1

使用標準的ConnectionStrings配置部分,你將能夠檢索連接字符串,而不訴諸公用事業類:

System.Configuration.ConfigurationManager.ConnectionStrings

你仍然將不得不把連接字符串到需要數據庫的每個應用程序的app.config或web.config文件中。

+0

公用事業類的作品。它在內部使用ConfigurationManager並正確地從web.config中檢索連接字符串。但數據集設計人員需要應用程序設置,並且代碼當前不使用該實用程序。我想我將不得不動態設置每個表適配器連接。或者,還有更好的方法? – Colin 2009-08-04 15:36:22

+0

我認爲DataSet設計器直接使用了這個ConnectionStrings部分。但是,如果沒有,也許你可以使用工廠模式來返回正確配置的適配器...這樣,至少表適配器的動態設置全部在一個地方完成。 – freshr 2009-08-05 05:37:53