.net SqlConnection n'étant pas fermé même si dans un {}

S'il vous plaît aider!

Informations de fond

J'ai une application WPF qui accède à un Serveur SQL server 2005 bases de données. La base de données est en cours d'exécution en local sur la machine de l'application est en cours d'exécution sur.

Partout-je utiliser Linq DataContext-je utiliser une aide de { } instruction, et de passer à un résultat d'une fonction qui retourne un objet SqlConnection qui a été ouvert et a une SqlCommand exécutée à l'aide avant de retourner à la DataContext constructeur.. I. e.

//In the application code
using (DataContext db = new DataContext(GetConnection()))
{
    ... Code 
}

où getConnection ressemble à ça (j'ai enlevé le "fluff" de la fonction pour la rendre plus lisible, mais il n'existe aucune fonctionnalité supplémentaire qui est manquant).

//Function which gets an opened connection which is given back to the DataContext constructor
public static System.Data.SqlClient.SqlConnection GetConnection()
{
   System.Data.SqlClient.SqlConnection Conn = new System.Data.SqlClient.SqlConnection(/* The connection string */);

    if ( Conn != null )
    {
        try
        {
            Conn.Open();
        }
        catch (System.Data.SqlClient.SqlException SDSCSEx)
        {
             /* Error Handling */
        }

        using (System.Data.SqlClient.SqlCommand SetCmd = new System.Data.SqlClient.SqlCommand())
        {
            SetCmd.Connection = Conn;
            SetCmd.CommandType = System.Data.CommandType.Text;

            string CurrentUserID = System.String.Empty;
            SetCmd.CommandText = "DECLARE @B VARBINARY(36); SET @B = CAST('" + CurrentUserID + "' AS VARBINARY(36)); SET CONTEXT_INFO @B";

            try
            {
                SetCmd.ExecuteNonQuery();
            }
            catch (System.Exception)
            {
                /* Error Handling */
            }
        }

        return Conn;
    }

Je ne pense pas que l'application WPF a aucune incidence sur le problème que j'ai.

La question que je vais avoir

Malgré l'occurrence de SqlConnection étant disposé le long avec le DataContext dans Sql Server Management studio, je peux encore voir des tas de connexions ouvertes avec :

status : 'Sleeping' 
command : 'AWAITING COMMAND' 
last SQL Transact Command Batch : DECLARE @B VARBINARY(36); SET @B = CAST('GUID' AS VARBINARY(36)); SET CONTEXT_INFO @B

Finalement le pool de connexion est utilisée et l'application ne peut pas continuer.

Donc je ne peux que conclure qu'en quelque sorte, de l'exécution de l'SQLCommand pour définir la Context_Info est en ce sens que la connexion n'est pas se débarrasser une fois le DataContext obtient éliminés.

Quelqu'un peut-il repérer quelque chose d'évident qui aurait un arrêt les connexions à partir de la fermeture et éliminés lorsque le DataContext ils sont utilisés par des sont éliminés?

source d'informationauteur Ash