Как и большинство поставщиков ADO.NET, Npgsql по умолчанию использует пул соединений. Когда вы Close()
объект NpgsqlConnection
, внутренний объект, представляющий фактическое базовое соединение, которое использует Npgsql, переходит в пул для повторного использования, что экономит накладные расходы на создание другого без необходимости. (См. Что на самом деле означает «открытие соединения»? для более подробной информации.)
Это хорошо подходит для большинства приложений, так как обычно требуется использовать соединение несколько раз в течение секунды.
Это вас совсем не устраивает, но если вы включите параметр Pooling=false
в строку подключения, он переопределит это значение по умолчанию, и Close()
действительно закроет фактическое соединение.