如何使用C#中的DataAdapter和存储过程对数据访问进行事务控制?

时间:2010-09-27 14:53:10

标签: c# dataadapter

如何使用C#中的DataAdapter和存储过程对数据访问进行事务控制?目前我想通过DataAdapter执行2个存储过程调用,但我想对它进行事务控制。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

这样做的首选方法是使用事务范围为您处理。只需用新的TransactionScope包围调用两个存储过程调用的代码体:

using(TransactionScope scope = new TransactionScope())
{
  // your ADO.NET code that calls sprocs ...
}

在同一连接上发生的对数据库的任何调用都将自动合并为一个事务。您还可以指定事务范围内的代码是应该在现有事务中登记还是通过可选的TransactionScopeOption参数启动它自己的事务。

这是将调用组合到单个事务中的首选方式。 alternative是通过调用Connection.BeginTransaction()手动获取DBTransaction - 执行您的工作,然后调用tran.Commit()

答案 1 :(得分:1)

我认为最简单的方法是在TransactionScope中包装两个调用。请参阅此页面上的示例:

http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx