@usr, и я имею разногласия в другом вопросе о том, будет ли .NET очищать открытые соединения, которые были бездействующими, но по-прежнему поддерживать удерживаемую ссылку.
Я поддерживаю, на основе документации , что если физическое соединение какое-то время бездействует, оно будет восстановлено через некоторое время, даже если ссылка на объект SQLConnection
остается удерживаемой.
usr утверждает, что этого не произойдет, и восстанавливает только соединения, на которые больше нет ссылок. Его утверждение, что это сделает пул соединений ненадежным и вызовет хаос с транзакциями.
Я признаю, что документация расплывчата в вопросе удерживаемых ссылок.
Я ищу авторитетный ответ на этот вопрос, а не просто догадываюсь. Либо кто-то экспериментировал и доказал любой случай, либо кто-то со знанием внутренней работы.
Так какой же это?
РЕДАКТИРОВАТЬ:
Я думаю, что путаница здесь связана с терминологией «закрыто». Похоже, что в документации закрытие физического соединения называется «удалением» соединения из пула. В то время как «закрытие» относится к выпуску открытого физического соединения обратно в пул для повторного использования.
Открытые соединения все еще могут быть прерваны, но неясно, помечает ли пулер это как недействительное, если оно все еще удерживается клиентским приложением как открытое (т.е. клиентское приложение еще не вызвало закрытие прерванного соединения). Не уверен, что это действительно имеет значение, кроме как часть подсчета пула.