Как установить TransactionScope для чтения Uncommited по умолчанию - PullRequest
1 голос
/ 07 декабря 2011

Мой проект использует dbml для доступа к базе данных с помощью linq to sql. Он использует транзакцию при нескольких операциях, которые требуются.

По мере роста базы данных я сталкиваюсь со следующими ошибками:

  1. Истекло время ожидания . Время ожидания истекло до завершения операции или сервер не отвечает.

  2. Транзакция (идентификатор процесса 82) заблокирована при блокировке | ресурсы буфера связи с другим процессом и были выбраны в качестве жертвы тупика. Перезапустите транзакцию

В проекте распространены тысячи запросов linq. Поэтому я не могу поставить код TransactionSope на все запросы выбора, так как это занимает много времени.

Есть ли способ, чтобы я мог установить Transaction IsolationLevel по умолчанию в dbml, чтобы он читал незафиксированным и не попадал в тупик.

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

1 Ответ

0 голосов
/ 07 декабря 2011

Следующий вызов перед выполнением запроса должен работать.

dataContext.ExecuteCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED")

Вы можете выполнить это один раз после инициализации dataContext ИЛИ

Реализуйте метод Extension, который вызывает datacontext ExecuteCommand один раз для установки изоляции транзакцииуровень, как указано выше, а затем один раз для фактического выполнения команды.

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