ADO.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)"); tx2.Commit(); tx.Commit(); 

…等

您可以使用TransactionScope嵌套TransactionScope – 但是,只有在提交最外层TransactionScope时,它们才会被提交。

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

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

 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() }