我试图制作我的第一个3层应用程序。在这个过程中我遇到了一个问题,我还没有找到最佳解决方案。 基本上我的所有对象都使用IFillable接口,它强制执行sub,如下所示
Public Sub Fill(ByVal Datareader As Data.IDataReader) Implements IFillable.Fill
然后该子要求来自datareader的Ids将与对象的属性相同。
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
大多数情况下,这种模式似乎有道理。不过我的问题是,假设我想为Stock实现一个名为StockBarcodeList的属性。在上面提到的模式下我实现这个属性的任何方式我都需要传递一个连接字符串,这显然打破了我对图层分离的尝试。
有没有人对我如何能够解决这个问题有任何建议,或者我是以完全错误的方式解决这个问题?有没有人对如何改进我的实施有任何建议?请注意,但我故意试图避免以任何形式使用数据集。
答案 0 :(得分:1)
使用app.config文件作为连接字符串。
答案 1 :(得分:0)
您是否有特殊原因通过ConnectionString
?对我来说这似乎是一个配置值?所以使用类似常量(或Config
单例)的东西可能是个更好的主意。