Транзакция и взаимоблокировки при использовании библиотеки предприятия - PullRequest
0 голосов
/ 13 апреля 2011

Мы используем Enterprise Library для доступа к данным.

Один из наших методов имеет удаление, а затем вставку против той же таблицы. Это дает тупик.

Если поместить их в область транзакции, тупик больше не возникает.

Интуитивно кажется, что все должно быть наоборот. Кто-нибудь может объяснить, почему это так работает?

1 Ответ

0 голосов
/ 13 апреля 2011

Область транзакции в сочетании с TransactionOptions IsolationLevel = IsolationLevel.ReadUncommitted эквивалентна WITH (NOLOCK) в T-SQL, поэтому, если таблица не заблокирована, взаимоблокировки не возникают ...

using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions(){ IsolationLevel = IsolationLevel.ReadUncommitted }))
{
}
...