Я вижу много людей в моей компании делают это:Использование TransactionScope для выполнения выбора
var transactionOptions = new System.Transactions.TransactionOptions();
transactionOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted;
using (var transactionScope = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required, transactionOptions))
{
try
{
using (DefaultContext ctx = new DefaultContext())
{
return ctx.Item.Where(x => x.State == 1);
}
}
catch (Exception err)
{
throw err;
}
finally
{
transactionScope.Complete();
}
}
мне действительно нужно открыть сделку к Выбрать и вызвать метод Complete() после того, как я совсем не думал что это было просто для модификации данных ...
Кто-то может объяснить мне, если это правильно? Это хорошая или плохая оценка? Разве это не нужно?
благодаря
Это кажется совершенно ненужным. Он может работать быстро, но я бы не стал накладными. Я использую только ограниченные txns со вставками и обновлениями. Я вижу, что это задает 'IsolationLevel'' ReadUncommitted'. Они могут делать это для эффекта NOLOCK, который обеспечивает. –
'ReadUncommitted' разрешает грязные чтения, то есть вы можете видеть данные из незавершенных запросов в ваших чтениях (см. Https://stackoverflow.com/questions/2471055/why-use-a-read-uncommitted-isolation-level), который * не * по умолчанию, но конструкция 'catch/throw' совершенно не нужна. –
Вы спросили кого-нибудь в вашей компании, почему они это делают? ;) Я согласен с @R. Ричардс, мне кажется, что единственная причина для этого - использовать уровень изоляции Read Uncommitted. Это говорит о том, что в какой-то момент (или в какой-то момент) возникла проблема с блокировкой, которая препятствует применению приложения, так что ReadUncommitted использовался, чтобы избежать блокировки чтения. ИМО, это довольно большое изменение доступа к данным (для использования по всем направлениям), поэтому я надеюсь, что кто-то узнает всю историю. Или, возможно, один человек сделал это один раз, и теперь это вопрос с копией/вставкой. –