Проверьте, есть ли открытое соединение с базой данных asp.net/c# - PullRequest
5 голосов
/ 07 января 2010

Каждый раз, когда мое приложение запускает хранимую процедуру, оно выполняет что-то вроде этого:

using (DbBase conn = new DbBase())
{      
    //call sproc
}

DBBase() открывает соединение с LINQ DataContext.

Что я хотел знать, если , есть способ узнать, было ли уже открыто соединение, и использовать его вместо открытия нового . Эта проверка должна выполняться внутри конструктора DbBase(), который выглядит следующим образом:

ClientDB = new ClientDBDataContext([ConnectionString from web.config]);

Спасибо

Ответы [ 5 ]

5 голосов
/ 07 января 2010

Вы просматриваете свойство State любого объекта DBConnection, и он сообщает вам, является ли открытым, закрытым, соединяющимся, выполняемым, извлекающим или поврежденным .

Тем не менее, используя оператор using{ }, вы гарантируете, что соединение закрывается, когда объект выходит из области видимости.

2 голосов
/ 07 января 2010

Преимущество использования using в том, что вам не о чем беспокоиться.

1 голос
/ 07 января 2010

При наличии пула соединений (по умолчанию - если вы явно что-то сделали, чтобы отключить его), это не проблема. Пусть код пула соединений обрабатывает это. Затем закрытие соединения фактически возвращает его обратно в пул для повторного использования. Только если в пуле их нет, новый будет создан (и открыт) для вас. Хорошо, что вы используете оператор using. Это гарантирует, что соединение будет возвращено обратно в пул для повторного использования (НЕ закрыто) в качестве doon, как этот фрагмент кода сделан с ним.

1 голос
/ 07 января 2010

Я не знаю о DBase, но поставщик Sql Server, по крайней мере, уже делает это для вас. Он использует пул соединений в фоновом режиме для повторного использования существующих соединений, где это возможно.

1 голос
/ 07 января 2010

Я бы не беспокоился об этом (если вы не профилировали это или что-то). При использовании пула соединений открытие нового соединения может быть очень дешевым. Если есть проблема, вы можете посмотреть на изменение количества соединений в пуле (http://www.15seconds.com/issue/040830.htm)

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