Насколько я понимаю, это работает в случае, когда область транзакции привязана только к одному соединению. Часто, потому что это лучшая практика, чтобы открыть соединение поздно и закрыть рано. может быть ситуация, когда область действия охватывает два соединения. Эти сценарии не поддерживаются в SQL Azure.
Пример того, где это может не сработать; беру пример; Предполагая, что MyDataContext.GetDataContext () возвращает новый экземпляр подключения.
using (var tx = new TransactionScope(TransactionScopeOption.RequiresNew,
new TransactionOptions()
{ IsolationLevel = IsolationLevel.ReadCommitted }
))
{
try{
DoSomething(); //a method with using (var db = MyDataContext.GetDataContext())
DoSomethingElse(); //another method with using (var db = MyDataContext.GetDataContext())
tx.Complete();
}
catch { //Exception handler
}
}
Эти ссылки должны дать вам несколько указателей