У меня было подозрение, что соединение с базой данных, используемое в одном из наших приложений, не всегда закрыто. Я пошел посмотреть код и нашел класс DataProvider
, который имеет SqlConnection
объект. Соединение открывается в конструкторе этого класса и закрывается в его методе Dispose
(не судите об этом, я знаю, что поддерживать открытое соединение - зло, это просто не мой код, и в любом случае это не главное). Метод Dispose
реализован так:
protected virtual void Dispose(bool disposing)
{
if (!_disposed)
{
if (disposing)
{
if (_conn != null)
_conn.Close();
}
_disposed = true;
}
}
Вопрос:
Всегда ли это гарантирует, что соединение закрыто?
Правильно ли этот код?
Я думаю, что должен быть вызван _conn.Dispose()
- я прав и может ли это повлиять на не закрытие соединения (вероятно, нет)?