Используйте открытое соединение для всех Linq DataContexts - PullRequest
0 голосов
/ 22 июня 2011

Я занимаюсь разработкой крупномасштабного веб-сайта, и когда я проверял запросы linq с помощью SQL Profiler, я обнаружил, что существует около 30 действий входа / выхода из системы.Я хочу уменьшить эти действия, используя открытое соединение для всех DataContexts, но я не знаю, как это сделать.Есть ли у вас какие-либо предложения?

1 Ответ

1 голос
/ 22 июня 2011

Это довольно плохая идея - вы создаете большой масштабируемый веб-сайт, поэтому позвольте Linq-to-sql обрабатывать само соединение.

Linq-to-sql внутренне обрабатывает открытие и освобождение соединения эффективным способом для его использования. Он использует пул соединений ADO.NET по умолчанию, поэтому соединение используется повторно и не открывается для каждого отдельного контекста.

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

Не делитесь контекстами и не делитесь соединениями - пусть ADO.NET обрабатывает пулы соединений и создает новый контекст для каждого отдельного запроса, или вы можете ожидать серьезных проблем.

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