在TransactionScope中使用ADO.Net事务?

时间:2009-11-23 22:45:26

标签: ado.net transactionscope

我一直在阅读有关TransactionScope的内容,并对其与ADO.Net交易的互操作性提出了疑问。现在我们有一些数据访问方法,每个方法都调用一个存储过程,并开始并提交自己的各个事务。 Straighforward,样板材料,方法如下:

sqlCommand = //create SQLCommand with Stored proc
SqlTransaction myTransaction = myConnection.BeginTransaction();
sqlCommand.Transaction = sqlTransaction;
sqlCommand.Execute();
sqlTransaction.Commit();

我简化了一些事情,但你明白了。

我现在需要连续调用其中两个类方法,并从业务层以团队形式提交或回滚它们。我无法修改数据方法,因此我考虑将两个调用放在TransactionScope块中。

如果我这样做,在创建TransactionScope时我应该使用哪种参数?我已经使用TransactionScopeOption.RequiresNew选项尝试了这个,但事情似乎有效,但那只是我的实验,我不确定它是否可行。 (我在这里要注意,这些是SQL事务,在同一个SQL服务器上运行。)

我看到TransactionScope有构造函数选项来处理COM +事务。因为我正在使用ADO.Net交易,这是否相关?谢谢你的建议。

1 个答案:

答案 0 :(得分:8)

TransactionScope文档here是一个很好的起点。

基本上它不需要在ADO级别处理事务。连接将自动考虑现有环境事务(默认值)。

请记住,您还可以通过连接字符串更改连接在环境事务中登记的方式。这个link将提供更多详细信息。

  

征集'真实'。 true表示SQL Server连接为pooler   自动在创建线程的当前登记连接   交易背景。