Почему Linq2Sql создает новое соединение для каждого вызова sproc и сохраняет его открытым? - PullRequest
0 голосов
/ 23 марта 2012

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

У меня установлена ​​linq2sql для базы данных sql server 2005. Я использую только хранимые процедуры.

Большинство моих процедур работают нормально, но этот конкретный процесс обновления иногда запускается несколько сотен раз подряд (клонирование деталей записи заголовка).

Это вызывает тайм-ауты, и при запуске скрипта для просмотра открытых соединений все соединения моего приложения находятся в спящем режиме и занимают место.

Есть мысли, советы?

Мой datacontext настроен как статическая переменная в классе обслуживания:

private static WarehouseSystemDataContext dc
{
    get
    {
        // It is being passed a closed SqlConnection object
        WarehouseSystemDataContext _dc = 
            new WarehouseSystemDataContext(Constants.getWarehouseSystemConn());
        _dc.ObjectTrackingEnabled = false;
        _dc.CommandTimeout = 600;

        return _dc;
    }
}

1 Ответ

3 голосов
/ 23 марта 2012

Вы создаете новое соединение каждый раз, когда на ссылку на текст данных ссылается

private static WarehouseSystemDataContext _dc
private static WarehouseSystemDataContext dc
{
    get
    {
        if(_dc == null)
        {
        // It is being passed a closed SqlConnection object
        _dc = new WarehouseSystemDataContext(Constants.getWarehouseSystemConn());
        _dc.ObjectTrackingEnabled = false;
        _dc.CommandTimeout = 600;
        }
        return _dc;

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