Voici le code d'un designer généré typique fonction de table Adaptateur:
Selon MSDN, DbDataAdapter.Fill
se comportent comme ceci:
La méthode de remplissage récupère les lignes de la source de données à l'aide l'instruction SELECT spécifiée par une propriété SelectCommand associée. L'objet de connexion associé à l'instruction SELECT doit être valide, mais il n'a pas besoin d'être ouvert. Si la connexion est fermée avant l'appel de Fill, il est ouvert pour récupérer les données, puis fermé. Si la connexion est ouverte avant l'appel de Fill, il reste ouvert.
Ref: Fill Method (DataTable)
Cependant, dans une Insérer/Supprimer/Mise à jour concepteur généré, le code ressemblerait à ceci:
global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State;
if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open)
!= global::System.Data.ConnectionState.Open)) {
this.Adapter.InsertCommand.Connection.Open();
}
try {
int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery();
return returnValue;
}
finally {
if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) {
this.Adapter.InsertCommand.Connection.Close();
}
}
Pourrait-il réutiliser une connexion via la mise en pool de connexions si, dans un certain délai? –
Ceci est orthogonal à la façon dont le gestionnaire de connexions gère le regroupement de connexions. Comme il utilise à chaque fois la même chaîne de connexion (à moins que vous ne fassiez quelque chose de différent), ils seront tirés du même pool. Le simple fait qu'il s'agisse d'un adaptateur de table ne change pas la façon dont les pools sont gérés. Si vous êtes intéressé, il existe un article sur MSDN qui couvre le pooling, mais il n'est pas spécifique aux adaptateurs de table (il ne l'est pas non plus): http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx – tvanfosson
Merci pour le lien. –