Я использую C# 3.5, и у меня есть код в области транзакции, который блокирует таблицы, как я могу предотвратить область транзакции от блокировки этих таблиц?Столбцы транзакций Scope Таблица
Спасибо,
Я использую C# 3.5, и у меня есть код в области транзакции, который блокирует таблицы, как я могу предотвратить область транзакции от блокировки этих таблиц?Столбцы транзакций Scope Таблица
Спасибо,
Вы должны использовать ключевые слова, чтобы предотвратить блокировку таблицы, например, nolock, но обратите внимание на то, как вы их читаете, например, прочитали прочитанные или прочитали без ограничений, поскольку это может оставить вас с так называемыми грязными чтениями.
Добавить в TransactionScope
с опцией RequireNew
и установите IsolationLevel
в ReadUncommitted
:
using (var t = new TransactionScope(TransactionScopeOption.RequireNew,
new TransactionOptions {
IsolationLevel = IsolationLevel.ReadUncommitted
}))
{
// your code
}
TransactionScope
делает блок кода транзакционным. Введенные таблицы блокируются, а «код» не был COMMITED/ROLLED BACK
.
Я решил эту проблему, добавив
with(nolock)
к SQL хранимых процедур, которые участвуют в сделке.
Спасибо за ваш ответ, я пробую его, но есть ли какие-то недостатки? –
Да: вы не участвуете в транзакции. Вы просили об этом, но вы должны знать, что делаете. Есть причина для инкапсулирующей транзакции, не так ли? – Frank
ах! Вы имеете в виду, что не будет отката или фиксации? –