Ne fermer une connexion de base de données dans la méthode dispose est la bonne?

J'ai eu des soupçons sur une connexion de base de données utilisé dans l'une de nos applications n'est pas toujours fermée. Je suis allé voir le code et j'ai trouvé une classe DataProvider qui a SqlConnection objet. Le lien est ouvert dans le constructeur de cette classe et fermé dans Dispose méthode (ne juge pas, je sais garder une connexion ouverte est le mal, c'est juste pas mon code et il n'est pas le point de la question de toute façon). Le Dispose méthode est implémentée comme ceci:

protected virtual void Dispose(bool disposing)
{
    if (!_disposed)
    {
        if (disposing)
        {
            if (_conn != null)
                _conn.Close();
        }

        _disposed = true;
    }
}

La question est:
Est-il toujours garantir que la connexion est fermée?
Est-ce un bon code?

Je pense qu'il devrait être _conn.Dispose() appelle - suis-je en droit et cela pourrait-il affecter la non fermeture de la connexion (probablement pas)?

Si vous avez un soupçon de confirmer en vérifiant à l'aide de compteurs de performance.
Une valeur de la clé de contrôle est NumberOfPooledConnections.

OriginalL'auteur agnieszka | 2009-06-19