Как я могу сохранить свою строку подключения живой среди классов

#c# #connection-pooling

#c# #объединение в пул соединений

Вопрос:

Я хочу использовать пул соединений в моем проекте C #. Я понимаю, что как только я получу соединение с SQL Server, пока я использую ту же строку подключения, объединение денежных средств будет работать. Однако у меня есть сомнения по поводу: как лучше всего передавать строку подключения через мои разные классы? Должен ли я передавать строку подключения в качестве параметра методам, которые используют ее для подключения? (например, каждый раз, когда мне нужно выполнить запрос)

Комментарии:

1. Не имеет большого значения, если вы читаете ее из своего файла конфигурации каждый раз, когда вам это нужно

2. Если один и тот же метод собирается запускать один и тот же запрос к одной и той же базе данных каждый раз, когда вызывается метод — вы можете сохранить соединение там (предпочтительно извлекая его из файла конфигурации). Лично я — поскольку у меня есть несколько методов, выполняющих разные хранимые процедуры / запросы, я написал класс и метод, которые возвращают любую строку подключения, которую я выберу (которые хранятся у меня app.config ), на основе переданного параметра. Таким образом, мне не нужно повторно вводить мою строку подключения несколькими различными методами.

Ответ №1:

ADO.NET имеет встроенный пул соединений, и вы действительно не можете создать лучший.

Когда вы создаете соединение, используя строку подключения, платформа проверяет пул соединений, чтобы увидеть, доступно ли соединение с этой строкой подключения. Если один из них есть, он извлекает его из пула и возвращает вам; в противном случае он создает новый и возвращает его вам.

Аналогично, когда вы закрываете (удаляете) соединение, оно не уничтожается немедленно. Когда вы закрываете соединение с определенной строкой подключения, оно не уничтожается немедленно. Вместо этого она возвращается обратно в пул соединений.

Автоматическое объединение пулов соединений можно отключить, чтобы вы могли использовать свое собственное решение, но это не рекомендуется.

Редактировать:

Как указывалось, я не ответил на вопрос в своем первоначальном ответе.

Как правило, вы не передаете строки подключения повсюду. Вместо этого они хранятся в файле конфигурации (либо web.config , либо app.config ) в разделе ConnectionStrings. Когда вам нужна строка подключения, вы извлекаете ее в методе, который требует ее использования ConfigurationManager.ConnectionStrings .

Комментарии:

1. Не уверен, отвечаете ли вы здесь на вопрос. как лучше всего передавать строку подключения через мои разные классы?,,,

2. @Steve Ты совершенно прав. Я неправильно истолковал вопрос, и этот ответ никоим образом не отвечает на его вопрос. Однако я оставлю это здесь в качестве примера для других того, как полностью упустить суть.