Question

J'ai essayé de faire ma première application à 3 niveaux. Dans le processus que j'ai rencontré un problème que je suis encore à trouver une solution optimale pour. Fondamentalement, tous mes objets utilisent une interface IFillable qui force la mise en œuvre d'un sous comme suit

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

Ce sous attend alors les Ids de la datareader seront identiques aux propriétés de l'objet en tant que tel.

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

En fin de compte je me retrouve avec une couche de données qui ressemble à quelque chose comme ça.

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

La plupart du temps ce modèle semble logique. Mais mon problème est, disons que je veux mettre en œuvre une propriété pour Stock appelé StockBarcodeList. Sous ce qui précède modèle mentionné quelque manière que je mets en œuvre cette propriété que je vais devoir passer un connectionstring à ce qui casse évidemment ma tentative de séparation des couches.

Est-ce que quelqu'un a des suggestions sur la façon dont je pourrais être en mesure de résoudre ce problème ou que je vais sur ce la façon tout à fait tort? Quelqu'un at-il des suggestions sur la façon dont je pourrais améliorer ma mise en œuvre? A noter cependant s'il vous plaît je tente délibérément d'éviter d'utiliser l'ensemble de données sous une forme quelconque.

Était-ce utile?

La solution

Y at-il une raison particulière que vous passez ConnectionString du tout? Il semble comme une valeur de configuration pour moi? Donc, en utilisant quelque chose comme une constante (ou un singleton Config) pourrait être une meilleure idée.

Autres conseils

Utilisez le fichier app.config pour votre chaîne de connexion.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top