the*_*ist 5 .net c# transactions transactionscope
我读过有关的TransactionScope和这个文章,但我还是不明白两两件事:
SqlCommand.ExecuteNonQuery执行它直到scope.Complete()被调用才真正执行?如果这是真的,那么在范围内执行的所有操作都会保留并等待scope.Complete()或scope.Rollback()?TransactionScope实例化它如何阻止SqlCommand.ExecuteNonQuery执行并等待scope.Complete()或scope.Rollback()?它是否会创建一些"地方"并SqlCommand以某种方式了解它并将指令放在那里?[1]当执行SqlCommand.ExecuteNonQuery时,在调用scope.Complete()之前它并没有真正执行?
不,这不正确.您的命令在您调用的行上执行ExecuteNonQuery.它,然而,有趣的是知道这里所有的改变都存储.更改不会直接转到服务器端的受影响的表,而是将更改存储在临时位置(再次位于服务器端),这会导致您对第二个问题的回答
[2]当实例化TransactionScope时,它如何阻止执行SqlCommand.ExecuteNonQuery并等待scope.Complete()或scope.Rollback()?
它不会阻止这样的动作被执行,但因为动作的结果存储在一个临时位置您必须合并这些变化与主表(S) - scope.Commit()或放弃这些变化- scope.Rollback()(或任何用于丢弃特定数据库数据提供程序中的更改)
| 归档时间: |
|
| 查看次数: |
2525 次 |
| 最近记录: |