Как весь код внутри блока TransactionScope на самом деле не выполняется до тех пор, пока область не будет зафиксирована или отменена?

Я читал о TransactionScope и этой статье, но до сих пор не понимаю двух вещей:

  1. Когда выполняется SqlCommand.ExecuteNonQuery, он на самом деле не выполняется, пока не будет вызван scope.Complete()? Если это так, то где все операции, которые были выполнены в рамках области видимости, остаются и ждут scope.Complete()или scope.Rollback()?
  2. Когда создается экземпляр TransactionScope, как он предотвращает выполнение SqlCommand.ExecuteNonQueryи ожидание scope.Complete()или scope.Rollback()? Создает ли он какое-то «место» и SqlCommandкаким-то образом знает об этом и помещает туда инструкции?

5
задан theateist 19 July 2012 в 10:44
поделиться