3-х уровневая схема приложения - PullRequest
0 голосов
/ 12 апреля 2010

Я попытался сделать свое первое трехуровневое приложение. В процессе, который я столкнулся с одной проблемой, мне еще предстоит найти оптимальное решение. В основном все мои объекты используют интерфейс IFillable, который заставляет реализацию подпрограммы выглядеть следующим образом

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

В этом подпрограмме ожидается, что идентификаторы из хранилища данных будут идентичны свойствам объекта как такового.

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. В соответствии с вышеупомянутым шаблоном, при любом способе реализации этого свойства мне нужно будет передать ему строку подключения, которая, очевидно, нарушит мою попытку разделения слоев.

У кого-нибудь есть какие-либо предложения о том, как я могу решить эту проблему, или я поступаю по этому поводу совершенно неправильно? У кого-нибудь есть какие-либо предложения по улучшению моей реализации? Обратите внимание, однако, что я намеренно стараюсь избегать использования набора данных в любой форме.

Ответы [ 2 ]

1 голос
/ 12 апреля 2010

Используйте файл app.config для вашей строки подключения.

0 голосов
/ 12 апреля 2010

Есть ли какая-то особая причина, по которой вы передаете ConnectionString вообще? Это похоже на значение конфигурации для меня? Поэтому лучше использовать что-то вроде константы (или Config синглтона).

...