Voici une réponse plus spécifique. Cela demontrastes comment vous pouvez utiliser un baseclass pour vos jeux de données typés dans le but de permuter dans votre propre connexion ou classes de commande.
Définissez ceci comme "BaseClass" pour chacun de vos TableAdapters typés, en remplaçant "System.ComponentModel.Component". En utilisant "MustInherit/MustOverride" ("Abstract" en C#), vous pouvez accéder aux propriétés que vous ne pouvez pas atteindre autrement.
Public MustInherit Class SuperTableAdapter
Inherits System.ComponentModel.Component
Public MustOverride ReadOnly Property MyCommandCollection As Data.SqlClient.SqlCommand()
Public Sub New()
MyBase.New()
'With the command collection exposed, you can replace it with your own.'
For i = 0 To MyCommandCollection.Length - 1
'Now you can put in your special command class here'
Dim myspecialCommand As New Data.SqlClient.SqlCommand()
MyCommandCollection(i) = myspecialCommand
Next
End Sub
End Class
Pour chacun de vos adaptateurs de table que vous définissez pour hériter votre BaseClass vous devez remplacer la propriété requise « MustOverride ». Sans cela, il ne compilera pas. Si vous ajoutez le code mais ne définissez pas la classe de base TableAdapter, il ne compilera pas non plus. C'est une bonne chose; Cela vous assure de bien faire les choses.
Namespace DataSet1TableAdapters
Partial Public Class Table1TableAdapter
Public Overrides ReadOnly Property MyCommandCollection As System.Data.SqlClient.SqlCommand()
Get
Return Me.CommandCollection
End Get
End Property
End Class
Partial Public Class Table2TableAdapter
Public Overrides ReadOnly Property MyCommandCollection As System.Data.SqlClient.SqlCommand()
Get
Return Me.CommandCollection
End Get
End Property
End Class
End Namespace
Maintenant, vous pouvez mettre toutes sortes de code spécial dans votre SuperTableAdapter. Si vous avez besoin d'accéder à quelque chose qui n'a pas été exposé, utilisez simplement "MustOverride" pour garantir qu'il est disponible.
Comment cela répond-t-il à la question d'une connexion client SQL personnalisée pour les tentatives? (timeouts) votre réponse a à voir avec les transactions ne pas réessayer, exécution asynchrone? – Maslow
La solution montre comment accéder aux propriétés de connexion/commande des jeux de données typés. Selon la façon dont vous avez implémenté votre classe, vous devrez remplacer les connexions/commandes dans un code similaire à celui-ci afin qu'il utilise votre classe. –