在TransactionScope中使用ADO.Net事务?

lar*_*ryq 5 ado.net transactionscope

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

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

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

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

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

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

mic*_*tan 8

这里的TransactionScope文档是一个很好的起点.

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

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

征集'真实'.true表示SQL Server连接池在创建线程的当前事务上下文中自动登记连接.