我正在阅读C#中的事务范围,它的工作原理如下:
using (connectionDb)
{
connectionDb.Open();
using (var ts = new System.Transactions.TransactionScope())
{ <--
try
{
connectionDb.ExecuteNonQuery();
ts.Complete();
}
catch (Exception)
{
throw;
}
finally
{ }
} <--
}
Run Code Online (Sandbox Code Playgroud)
using括号中的每个子句都在同一个事务中工作,但我不明白代码如何识别数据库命令在作用域上运行而不传递事务作用域参数既不是连接的开放,也不是在执行时查询.
例如,如果我有以下代码:
var myObject = new MyObject();
var childObject = new ChildObject();
childObject.Foo(myObject);
childObject.Bar(myObject);
Run Code Online (Sandbox Code Playgroud)
我可以为变量创建一个范围myObject并使用到childObject方法而不通过参数传递吗?像这样:
using(var myObject = new MyObject())
{
childObject.Foo(); -- Here the method use the variable myObject
childObject.Bar(); -- Here the method use the variable myObject
}
Run Code Online (Sandbox Code Playgroud)
创建TransactionScope时,它存储在静态变量Transaction.Current中,该变量保存在线程本地存储中.与事务交互的方法查看此变量以确定它们所处的事务.这称为环境事务.
| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |