2010-09-02 113 views
1

我有兩個可執行文件訪問包含數據訪問層一個DLL對象 每個exe文件可以包含服務器上的信息和 數據庫名稱,連接字符串等傳遞連接字符串

我如何通過不同的配置配置信息到DAL對象?

很明顯,我可以通過配置串到DAL對象 我每次實例化一個時間,但似乎混亂和重複作爲DAL每類都需要屬性的配置字符串..

誰能告訴我有沒有更好的辦法?

我想知道是否有一種方法讓實例化的DAL對象從調用對象讀取一些屬性,而無需我明確地傳遞它們?

回答

0

如何讓所有DAL類從包含連接字符串屬性的基類派生?

在這種情況下,您可以在子構造函數調用上調用基的構造函數,然後該基構造函數將成爲加載連接字符串的單個位置。

如果您在兩個Exe的例如:「DBConnectionString」中使用相同的ConfigKey - 那麼構造器將只從配置文件「DBConnection」條目加載值 - 無論哪個exe調用dal和正確的連接值字符串將傳遞給它

執行將在下面的行... 對不起,使用類似C#的語法。我很多年前使用過VB。

class BaseDAL 
{ 
    protected String _connectionString; 
    BaseDAL() 
    { 
    _connectionString = ConfigurationManager.AppSettings("DBConnectionString") 
    } 
    ....  
} 

class ChildDAL : BaseDal 
{ 
    ChildDAL():base() 
    { 
    .... 
    } 
} 
+0

好吧我明白從基類繼承將刪除我需要在DAL類中的連接字符串屬性,這是很好的。 但我不知道你說什麼關於傳遞連接字符串從exe到DAL類,因爲他們instanciated。 您是否建議將它傳遞給每個DAL對象,因爲它是在構造函數中創建的? – zebidy 2010-09-02 05:05:57

+0

@zebidy - 只編輯了代碼 - 請參閱BaseDAL的構造函數。它是具有查找連接字符串邏輯的單個位置。 DAL - 在實例化時 - 將能夠以這種方式獲取連接字符串。不需要傳遞任何東西。 – InSane 2010-09-02 05:19:37

+0

這是非常棒的,非常感謝我正在尋找的指導。 – zebidy 2010-09-02 06:19:17

0

也許我錯過了一些東西,但你可以把連接字符串放到App.config或Web.config中。

<appSettings> 
    <!-- This sets the server, the username, and the password to connect to the database --> 
    <add key="SqlConnectionString" 
      value="Data Source=servername;Database=dbname;User ID=username;Password=password;Charset=utf8;" 
    /> 
</appSettings> 

然後,在你的代碼只需在閱讀:

Shared connectionString As String = ConfigurationManager.AppSettings("SqlConnectionString") 

你只需要每EXE我想一個App.config中。

如果你真的有一個不同的連接字符串的EXE運行的每個實例可以將它存儲在緩存中,但我不認爲這是你在做什麼。

編輯:我在我的例子中使用的連接字符串將連接到MySQL。顯然,連接字符串本身會因數據庫而異。

+0

謝謝,但存儲和檢索配置字符串不是問題。 我想我想讓instanciated DAL對象能夠讀取配置字符串,而不必將每個對象明確地作爲屬性傳遞給它們。 – zebidy 2010-09-02 05:09:01