#c# #connection-pooling
#c# #объединение в пул соединений
Вопрос:
Я хочу использовать пул соединений в моем проекте C #. Я понимаю, что как только я получу соединение с SQL Server, пока я использую ту же строку подключения, объединение денежных средств будет работать. Однако у меня есть сомнения по поводу: как лучше всего передавать строку подключения через мои разные классы? Должен ли я передавать строку подключения в качестве параметра методам, которые используют ее для подключения? (например, каждый раз, когда мне нужно выполнить запрос)
Комментарии:
1. Не имеет большого значения, если вы читаете ее из своего файла конфигурации каждый раз, когда вам это нужно
2. Если один и тот же метод собирается запускать один и тот же запрос к одной и той же базе данных каждый раз, когда вызывается метод — вы можете сохранить соединение там (предпочтительно извлекая его из файла конфигурации). Лично я — поскольку у меня есть несколько методов, выполняющих разные хранимые процедуры / запросы, я написал класс и метод, которые возвращают любую строку подключения, которую я выберу (которые хранятся у меня
app.config
), на основе переданного параметра. Таким образом, мне не нужно повторно вводить мою строку подключения несколькими различными методами.
Ответ №1:
ADO.NET имеет встроенный пул соединений, и вы действительно не можете создать лучший.
Когда вы создаете соединение, используя строку подключения, платформа проверяет пул соединений, чтобы увидеть, доступно ли соединение с этой строкой подключения. Если один из них есть, он извлекает его из пула и возвращает вам; в противном случае он создает новый и возвращает его вам.
Аналогично, когда вы закрываете (удаляете) соединение, оно не уничтожается немедленно. Когда вы закрываете соединение с определенной строкой подключения, оно не уничтожается немедленно. Вместо этого она возвращается обратно в пул соединений.
Автоматическое объединение пулов соединений можно отключить, чтобы вы могли использовать свое собственное решение, но это не рекомендуется.
Редактировать:
Как указывалось, я не ответил на вопрос в своем первоначальном ответе.
Как правило, вы не передаете строки подключения повсюду. Вместо этого они хранятся в файле конфигурации (либо web.config
, либо app.config
) в разделе ConnectionStrings. Когда вам нужна строка подключения, вы извлекаете ее в методе, который требует ее использования ConfigurationManager.ConnectionStrings
.
Комментарии:
1. Не уверен, отвечаете ли вы здесь на вопрос. как лучше всего передавать строку подключения через мои разные классы?,,,
2. @Steve Ты совершенно прав. Я неправильно истолковал вопрос, и этот ответ никоим образом не отвечает на его вопрос. Однако я оставлю это здесь в качестве примера для других того, как полностью упустить суть.