2010-12-31 2 views
2

Я использую LINQ to SQL в приложении asp.net mvc. Я вызываю хранимые процедуры через вызовы ajax.LINQ to SQL DB Соединения не закрываются

Активные соединения для 2-3 пользователей подключаются к 100 активным соединениям. а затем происходит тайм-аут сервера.

Затем я использовал IOC -autofac для повторного использования одного и того же репозитория, у которого есть файл datacontext. теперь я получаю активное соединение на SQL-сервере для пользователя в loggedin плюс один. Я никогда раньше этого не видел.

  1. Почему бы Lin2sql не отказаться от соединения, когда оно не используется?
  2. будет ссылаться на хранимую процедуру в вызове ajax в сеансе сеанса loggedin для создания нового активного соединения?
  3. Может ли хранимая процедура с циклами и или ждать, чтобы открыть соединение?
+0

Необходимо добавить код. Вы не отправляете соединения где-то ... – gbn

+0

Isnt LINQ 2 SQL допускает, чтобы открывать соединение только когда это необходимо, потому что он ленивый. Также он закрывает соединения, когда больше не требуется даже до того, как он удаляется? правильно?? – Joe

+1

Неправильно. Ленивая загрузка не имеет ничего общего с открытием или закрытием соединения. –

ответ

1

Соединение, связанное с объектом контекста L2S, будет удаляться только при удалении объекта соединения либо вами, либо GC. Он не будет сброшен из-за бездействия.

Если вы попытаетесь создать свой контекстный объект в инструкции Using, они будут утилизированы соответствующим образом.

+0

Когда вы используете datacontext в шаблоне репозитория с использованием инструкции ???? – Joe

+0

@Joe: Это может помочь - http://stackoverflow.com/questions/2357615/how-do-i-correctly-dispose-a-linq-to-sql-datacontext-in-a-repository –

+0

Я реализую одноразовые в репозитории, но я не a) обертывал хранилище при использовании, и не b) имел autofac, ограниченный срок службы – Joe