Вы должны рассматривать объект SqlConnection
и базовое соединение как отдельные.Это базовое соединение, которое объединено в пул.Он возвращается в пул при удалении SqlConnection
либо явным использованием Dispose()
, либо блоком using
.Позже может быть создан новый (другой) SqlConnection
с тем же базовым соединением.
Итак: волшебство происходит:
using (SqlCommand NewCommand = new SqlCommand("SomeCommand", NewConnection))
{
...
} <==== here
* = оно также может (я не проверял) быть возвращенным в пул GC
/ finalizer - но мы не должнысосредоточиться на этом, потому что, если это произойдет, вы уже делаете это неправильно.