我在阅读有关C#中事务范围的内容,它的工作原理如下:
using (connectionDb)
{
connectionDb.Open();
using (var ts = new System.Transactions.TransactionScope())
{ <--
try
{
connectionDb.ExecuteNonQuery();
ts.Complete();
}
catch (Exception)
{
throw;
}
finally
{ }
} <--
}
每个括号中的语句都在同一个事务中执行,但我不理解代码如何确定数据库命令正在作用域内运行,既没有传递事务作用域参数,也没有打开连接,也没有执行查询。
例如,如果我有以下代码:
var myObject = new MyObject();
var childObject = new ChildObject();
childObject.Foo(myObject);
childObject.Bar(myObject);
我能否创建一个作用域来存储变量myObject
,并在子对象方法中使用,而无需通过参数传递?像这样:
using(var myObject = new MyObject())
{
childObject.Foo(); -- Here the method use the variable myObject
childObject.Bar(); -- Here the method use the variable myObject
}
ThreadStatic
,因为它有一些注意事项。例如,如果你正在分配一个默认值,那么它只会被用于导致静态构造函数运行的第一个线程 - 其他线程将为空(null / 默认)。 - Luaan