Tengo la sospecha de que una conexión de base de datos utilizada en una de nuestras aplicaciones no siempre está cerrada. Fui a ver el código y encontré una clase DataProvider
que tiene el objeto SqlConnection
. La conexión se abre en el constructor de esta clase y se cierra en su método Dispose
(no juzgue eso, sé que mantener una conexión abierta es malo, simplemente no es mi código y de todos modos no es el objetivo de la pregunta). El método se implementa Dispose
así:¿Cerrar una conexión de base de datos en el método Dispose es correcto?
protected virtual void Dispose(bool disposing)
{
if (!_disposed)
{
if (disposing)
{
if (_conn != null)
_conn.Close();
}
_disposed = true;
}
}
La pregunta es:
¿Siempre se garantiza que la conexión se cierra?
¿Este código es correcto?
Creo que debería haber _conn.Dispose()
llamado - estoy en lo correcto y podría afectar no cerrar la conexión (probablemente no)?
Si tiene una sospecha confirmar marcando con el contador de rendimiento. – RichardOD
Un valor clave para verificar es NumberOfPooledConnections. – RichardOD