在TransactionScope中使用ADO.Net事务?

我一直在阅读有关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交易,这是否相关?感谢您的建议.

最佳答案
TransactionScope文档here是一个很好的起点.

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

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

Enlist ‘true’. true indicates that the SQL Server connection pooler
automatically enlists the connection in the creation thread’s current
transaction context.

转载注明原文:在TransactionScope中使用ADO.Net事务? - 代码日志