2010-07-12 4 views

Répondre

2

Je vous suggère de laisser le cache de requêtes seul pour gérer les connexions ADO.NET et utiliser connection pooling (qui est la valeur par défaut). Il suffit de le faire ci-dessous où vous voulez et il va fermer/disposer correctement:

using (SqlConnection cn = new SqlConnection(connectionString)) 
{ 
    using (SqlCommand cm = new SqlCommand(commandString, cn)) 
    { 
     cn.Open(); 
     cm.ExecuteNonQuery(); 
    } 
} 
+0

Je suppose que @Downvoter me frappe pour les mêmes raisons que @LukeH. Pourquoi ne postez-vous pas une réponse puisque vous êtes si critique? –

5

Je recommande fortement que vous ne mettez pas la connexion dans le cache en premier lieu.

Chaque fois que vous avez besoin d'une connexion, ouvrez-en une nouvelle (le plus tard possible). Lorsque vous avez terminé, fermez-le/jetez-le (le plus tôt possible). Vous êtes probablement conscient que le modèle le plus simple pour garantir ce comportement est un bloc using.

Il est très économique d'ouvrir et de fermer des connexions à partir du pool, et le regroupement de connexions est activé par défaut. Laissez le pool de connexions gérer les détails tels que la mise en cache, etc: c'est ce qu'il est là pour et il n'y a vraiment aucun avantage - et beaucoup de pièges potentiels - si vous le faites vous-même.

+2

@Downvoter: Vous voulez expliquer pourquoi? – LukeH

+0

Parce que cela ne répond pas à la question, le site le suit. C'est comme répondre à des questions sur le webservice en disant: n'utilisez pas les services web parce que de mauvaises choses pourraient arriver. Je ne peux pas supprimer la question, alors je reformulerai le tout. – MatthewMartin

+1

@MatthewMartin: Si tout ce que StackOverflow a fait était de répondre à toutes les * mauvaises * questions que les gens se posent (au lieu de suggérer que l'affiche aboie sur le mauvais arbre), ce serait bien pire. Vous ne pouvez pas blâmer quelqu'un pour avoir essayé de vous aider à résoudre un problème sérieux avec le code que vous avez publié à l'origine. –