Будет ли метод утилизации SqlConnection мешать пулу соединений? - PullRequest
7 голосов
/ 20 июля 2011

Насколько я понимаю, .Net будет объединять SqlConnection объекты, где строка подключения одинакова по умолчанию. Будет ли соединение по-прежнему объединяться, если я вызову метод Dispose?

Этот вопрос задается в контексте приложения ASP.NET, которое иногда делает много обращений к базе данных в одном PageLoad событии. Я хочу, чтобы соединения были объединены в пул, но хотелось бы, чтобы подтверждение того, что закрытие и удаление соединения после завершения операции с данными не мешает обработке .NET пула соединений.

Ответы [ 3 ]

10 голосов
/ 20 июля 2011

При использовании пула соединений закрытие SqlConnection просто говорит пулу соединений, что вы с ним покончили.Затем пул решит, следует ли на самом деле закрыть соединение или использовать его повторно.

Из документов MSDN :

Если SqlConnection выходит из строяобласти, это не будет закрыто.Поэтому вы должны явно закрыть соединение, вызвав Close или Dispose.Close и Dispose функционально эквивалентны.Если для значения пула соединений Pooling установлено значение true или да, базовое соединение возвращается обратно в пул соединений.С другой стороны, если для пула задано значение false или нет, основное соединение с сервером закрывается.

3 голосов
/ 20 июля 2011

В документации MSDN по Пул соединений с SQL Server написано

Соединения освобождаются обратно в пул, когда они закрыты или расположенный

и

Настоятельно рекомендуем всегда закрывать соединение, когда вы закончили использовать его, так что соединение будет возвращено бассейн. Вы можете сделать это, используя методы Close или Dispose Объект соединения ...

Кроме того, именно пул соединений определяет, будут ли соединения сброшены из пула

Пул соединений удаляет соединение из пула после того, как оно долгое время простаивал, или если пулер обнаружил, что соединение с сервером разорвано

1 голос
/ 20 июля 2011

Насколько я понимаю, .Net будет объединять объекты SqlConnection

Нет, поставщик SQL будет объединять базовые подключения к SQL Server (с отдельными пулами на основе строки подключения).

Объекты SqlConnection получат соединение из пула (или создадут новое и т. Д. В зависимости от того, что настроено для пула, доступно ли соединение из пула) при вызове Open и освободят соединениекогда вызывается Close или Dispose.

Два понятия (SqlConnection объекты и фактические соединения с SQL Server) различны, но, очевидно, в некоторой степени связаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...