Нужно ли вручную закрывать соединение SQL, если я использую Linq? - PullRequest
8 голосов
/ 30 декабря 2008

Традиционно, когда мы используем строку SQL для выполнения какой-либо работы, мы должны закрыть соединение sql перед закрытием страницы, мне было интересно, если я использую Linq для выполнения операций с данными, мне все еще нужно закрыть соединение вручную?

Ответы [ 3 ]

10 голосов
/ 30 декабря 2008

Это очень похоже на (но не вполне дубликат) этот вопрос .

LINQ to SQL будет открывать и закрывать соединения, когда это необходимо - вам не нужно избавляться от DataContext. Однако бывают ситуации, когда вы можете «обмануть» контекст, чтобы оставить соединение открытым, когда не следует - лично мне нравится распоряжаться им как само собой разумеющимся. См. Мой ответ на другой вопрос для получения более подробной информации от Мэтта Уоррена из команды LINQ to SQL.

Однако я не знаю о Entity Framework.

2 голосов
/ 30 декабря 2008

Я подробно ответил на вопрос о закрытии соединений, который может вас заинтересовать здесь .


Microsoft ответила на этот вопрос здесь :

Q. Как долго работает моя база данных связь остается открытой?

A. Соединение обычно остается открытым пока вы не используете результаты запроса. Если вы ожидаете, что потребуется время для обработки все результаты и не против кешируя результаты, применяем ToList <(Of <(TSource>)>) к запросу. В общем сценарии, где каждый объект обрабатывается только один раз, потоковое Модель превосходит как в DataReader и LINQ to SQL.

Точные детали использования соединения зависит от следующего:

Состояние соединения, если DataContext построен с подключением объект.

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


Более подробную информацию можно найти здесь :

Вы можете указать существующее соединение ADO.NET при создании LINQ to SQL DataContext. Все операции с DataContext (включая запросы) используют это предоставленное соединение. Если соединение уже открыто, LINQ to SQL оставляет его как есть, когда вы закончите с ним.

0 голосов
/ 30 декабря 2008

В коде вам не нужно открывать и закрывать соединения. Однако IMO, LinqDataContext, должен рассматриваться как ресурс, такой как SqlConnection или SqlCommand, и должен быть частью блока using, чтобы вы могли его использовать, когда он не используется. Хотя я читал в MSDN, что это не обязательно, но это хорошая практика.

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