Изолированное соединение ADO.NET и транзакция в области транзакций - PullRequest
0 голосов
/ 24 сентября 2010

Справочная информация. У меня есть приложение ASP.NET MVC, которое упаковывает действия контроллера в TransactionScope с использованием фильтра действий.

дальше вниз по течению (на уровне моей инфраструктуры); Я хотел бы открыть новое соединение ADO.NET (к той же базе данных, что и моя внешняя TransactionScope, если это возможно) и позволить ему участвовать в собственной транзакции - без привязки к текущей TransactionScope, запущенной на уровне контроллера; как мне это сделать?

1 Ответ

1 голос
/ 24 сентября 2010

Вы проходите мимо TransactionScopeOption.RequiresNew:

TransactionOptions to = new TransactionOptions;
to.IsolationLevel = <desiredIsolationLevel>;
using (TransactionScope scope = new TransactionScope(
   TransactionScopeOption.RequiresNew, to))
{
  ... do work here
  scope.Complete ();
}

Будьте осторожны, под этим мостом есть драконы.В частности, легко заблокировать себя, если охватывающая область имеет ожидающие незавершенные записи из своей собственной области транзакции, и вы пытаетесь прикоснуться к тем же объектам во внутренней автономной транзакции (новая область).

...