Mon application actuelle utilise une couche d'accès aux données basée sur une instance. J'instancie la couche avec la chaîne de connexion. J'appelle alors une méthode qui va faire une sorte de commande. Par exemple, il existe une méthode qui remplira un ensemble de données. Fondamentalement, je passe la procédure stockée et tous les paramètres SQL et récupère un ensemble de données. Est-il préférable d'avoir une classe statique pour gérer mon accès aux données ou une instance basée? J'ai une couche de domaine avec des objets, mais je ne cartographie pas les objets comme le ferait un ORM. Je passe les objets dans des usines qui instancient ensuite la couche de données pour récupérer un ensemble de données. Je fais ensuite correspondre l'ensemble de données à l'objet. Je prévois mettre à jour mon application (et oui passer à C#), mais je n'ai pas le temps de tout changer. Je fais la même chose pour les mises à jour des insertions, et les suppressions. Si ce que je fais est OK pour le moment, faites le moi savoir. Voyez-vous des problèmes avec cette approche? Sinon, que devrais-je faire? Je n'ai pas écrit cette classe. Je l'ai trouvé en ligne et j'ai pensé que c'était ce dont j'avais besoin.Couche d'accès aux données Statique ou basée sur une instance?
Voici un exemple de la classe de données:
Public Sub New(ByVal connectionString As String)
_connectionString = connectionString
End Sub
Public Function FillDataset(ByVal cmd As String, ByVal cmdType As CommandType, Optional ByVal parameters() As SqlParameter = Nothing) As DataSet
Dim connection As SqlConnection = Nothing
Dim command As SqlCommand = Nothing
Dim sqlda As SqlDataAdapter = Nothing
Dim res As New DataSet
Try
connection = New SqlConnection(_connectionString)
command = New SqlCommand(cmd, connection)
command.CommandType = cmdType
AssignParameters(command, parameters)
sqlda = New SqlDataAdapter(command)
sqlda.Fill(res)
Catch ex As Exception
'CreateDataEntry(ex, WriteType.ToFile, cmd)
Finally
If Not (connection Is Nothing) Then connection.Dispose()
If Not (command Is Nothing) Then command.Dispose()
If Not (sqlda Is Nothing) Then sqlda.Dispose()
End Try
Return res
End Function
Public Function ExecuteNonQuery(ByVal spname As String, ByVal ParamArray parameterValues() As Object) As Object
Dim connection As SqlConnection = Nothing
Dim command As SqlCommand = Nothing
Dim res As Object = Nothing
Try
connection = New SqlConnection(_connectionString)
command = New SqlCommand(spname, connection)
command.CommandType = CommandType.StoredProcedure
command.Parameters.AddRange(parameterValues)
connection.Open()
command.ExecuteNonQuery()
res = command.Parameters(command.Parameters.Count - 1).Value
Catch ex As Exception
CreateDataEntry(ex, WriteType.ToFile, spname)
If Not (transaction Is Nothing) Then
transaction.Rollback()
End If
Finally
If Not (connection Is Nothing) AndAlso (connection.State = ConnectionState.Open) Then connection.Close()
If Not (command Is Nothing) Then command.Dispose()
End Try
Return res
End Function
Je suis totalement d'accord. Je suis le plus susceptible d'utiliser LINQtoSQL. J'ai déjà quelques idées et du code écrit pour la prochaine itération de mon application. Merci pour votre contribution! – DDiVita