5

我一直在阅读有关 TransactionScope 的内容,并且对它与 ADO.Net 事务的互操作性有疑问。现在我们有一些数据访问方法,每个方法都调用一个存储过程并开始和提交他们自己的单独事务。直截了当,样板的东西,方法如下所示:

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 事务,所以这与这里有关吗?感谢您的建议。

4

1 回答 1

8

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

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

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

争取“真实”。true 指示 SQL Server 连接池程序自动在创建线程的当前事务上下文中登记连接。

于 2009-11-23T22:50:48.577 回答