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