Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ADO.NET中的嵌套事务_C#_.net - Fatal编程技术网

C# ADO.NET中的嵌套事务

C# ADO.NET中的嵌套事务,c#,.net,C#,.net,首先,是否可以通过ADO.Net拥有n个事务级别。第二,这个用法正确吗 var tx = cx.BeginTransaction(); cx.Execute("insert into atable(id) values(123123)"); var tx2=tx.BeginTransaction(); cx.Execute("insert into atable(id) values(123127)"); t

首先,是否可以通过ADO.Net拥有n个事务级别。第二,这个用法正确吗

        var tx = cx.BeginTransaction();

        cx.Execute("insert into atable(id) values(123123)");

        var tx2=tx.BeginTransaction();

        cx.Execute("insert into atable(id) values(123127)");

        tx2.Commit();

        tx.Commit();
。。。
等等。

您可以使用嵌套事务-但是,只有在最外部的事务被提交后,它们才会被提交

如果其中任何一个回滚,它们都将回滚

在使用方面-您应该使用语句将事务创建包装在
中,以确保正确处理

using(var tx1 = new TransactionScope())
{
   cx.Execute("insert into atable(id) values(123123)");

   using(var tx2 = new TransactionScope())
   {
        cx.Execute("insert into atable(id) values(123127)");
        tx2.Complete();
   }

   tx1.Complete()
}

你能解释一下你为什么要这样做吗?为什么你首先要使用不同的交易?您一次只执行一个操作,并且该操作已经是事务性的,insert提交或不提交。你想要完成的是什么?似乎整个过程只需要一个事务。@PedroC88:这只是一个例子。用简单的东西来说明更容易。看起来像是供应商的问题。谢谢。您缺少TransactionScope的构造函数参数吗?@sgtz-它有一个空的无参数构造函数。不过,如果愿意,您可以指定几个不同的参数。这是可行的。泰。c#如何将TransactionScope对象与连接/事务关联?这里有编译器的魔力吗?我仍然希望我知道为什么我的例子中的第二个承诺失败了。哦,好吧。@sgtz-它使用了。看看这篇文章中的链接。