2014-04-23 3 views
1

Mon formulaire appelle plusieurs objets TableAdapter pour remplir un DataSet local commun avec des lignes pertinentes (voir ci-dessous).Partager SqlConnexion entre les TableAdapters

private void frm_TrialsFromOrder_Load(object sender, EventArgs e) 
{ 
    this.trialTableAdapter.FillBy(this.myDataSet.trialTable, this.trial_id); 
    this.orderTableAdapter.FillBy(this.myDataSet.orderTable, this.order_id); 
} 

Lors de l'exécution du programme, le Générateur de profils SQL Server montre:

  1. Audit Logon
  2. SQL: Lot (SELECT ... FROM trialTable ...)
  3. Audit Logoff
  4. Audit Ouverture de session
  5. SQL: lot (SELECT ... FROM orderTable ...)
  6. Au dit Logoff

Comment puis-je configurer plusieurs objets TableAdapter pour utiliser le même SqlConnection?

Répondre

2

Vous ne voulez pas. L'objet SqlConnection est créé pour être créé, à l'intérieur d'un using en tant que meilleure pratique, utilisé, puis éliminé (d'où l'instruction using). Ne partagez pas les objets de connexion. L'opération de mise en pool des connexions pour s'assurer que ce n'est pas cher est gérée par le serveur.

par MSDN:

Afin d'assurer que les connexions sont toujours fermés, ouvrez la connexion à l'intérieur d'un bloc à l'aide, comme indiqué dans le fragment de code suivant. Cela garantit que la connexion est automatiquement fermée lorsque le code quitte le bloc.

Est-ce assurez-vous de définir la propriété Pooling sur la chaîne de connexion à true de telle sorte que la mise en commun est activé; cela irait à l'encontre du but autrement (en général).

Questions connexes