2010-04-12 57 views
0

我試圖讓我的第一個3層應用程序。在這個過程中,我遇到了一個問題,我尚未找到最佳解決方案。 基本上所有我的對象使用IFillable接口這迫使子執行如下3層應用程序模式建議

Public Sub Fill(ByVal Datareader As Data.IDataReader) Implements IFillable.Fill 

此子然後預期來自DataReader的的ID將是相同的對象作爲這樣的屬性。

Me.m_StockID = Datareader.GetGuid(Datareader.GetOrdinal("StockID")) 

最後我最終得到了一個類似於這樣的數據層。

Public Shared Function GetStockByID(ByVal ConnectionString As String, ByVal StockID As Guid) As Stock 
     Dim res As New Stock 
     Using sqlConn As New SqlConnection(ConnectionString) 
      sqlConn.Open() 
      res.Fill(StockDataLayer.GetStockByIDQuery(sqlConn, StockID)) 
     End Using 
     Return res 
End Function 

大多數情況下這種模式似乎有意義。然而,我的問題是,讓我們說我想實現一個名爲StockBarcodeList的股票屬性。在上面提到的模式下,我實現這個屬性的任何方式都需要傳遞一個連接字符串給它,這明顯地破壞了我在圖層分離上的嘗試。

有沒有人有任何建議,我可能能夠解決這個問題,或者我會這樣完全錯誤的方式嗎?有沒有人對我如何改進我的實現有任何建議?但請注意,我故意試圖避免以任何形式使用數據集。

回答

0

你有沒有特別的理由讓你通過ConnectionString?這對我來說似乎是一個配置值?所以使用類似常量的東西(或一個Config單身人士)可能是一個更好的主意。

+0

我通過它,因爲我喜歡「應用程序」和「數據層」的完全分離,但您的評論讓我開始重新思考它。真的,它不過是一個全局字符串,所以我直接在數據訪問層中直接使用它看不到太大的傷害嗎? – 2010-04-12 15:48:47

1

使用app.config文件作爲連接字符串。

+0

好點,沒有注意到它是.net – Mene 2010-04-12 19:38:09