C# ADO.NET中的嵌套事务
首先,是否可以通过ADO.Net拥有n个事务级别。第二,这个用法正确吗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
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-它使用了。看看这篇文章中的链接。