Еще одна вещь, о которой следует помнить, это то, что в .Net вы можете заключить ваши соединения в блок использования, и это закроет и утилизирует ваши соединения для вас. Так что отсутствие явного Close () не так уж и плохо, если у вас есть блоки использования ...
// this using block will auto close & dispose your connection...
using (var conn = new SqlConnection(...))
{
conn.Open();
// database code here with no explicit close
}
это функциональный эквивалент блока try / finally с conn.close в finally. Многие разработчики игнорируют блоки использования - убедитесь, что в этом случае вы не делаете то же самое.
Если вы переписываете свой код, чтобы закрыть ваши соединения, рекомендуется использовать Использование блоков вокруг всех объектов базы данных (соединение, команда, читатель), чтобы убедиться, что они закрываются и удаляются, когда они выходят за рамки блок использования. Я определенно рекомендую записывать их в ваш код, а не просто conn.Close (), где это необходимо.