1

我正在开发一个 .Net 2.0 应用程序,需要在我的代码中包装一些数据库事务。后端是 SQL Server 2008。

我已经离开 .net 几年了,我最后一次进行任何事务处理是在 .Net 1.1 中使用服务组件。我知道 TransactionScope,并且想知道这是否是现在处理事情的好方法。

此外,在 .Net 3.5 中,我假设还有其他方法可以做到这一点,比如 WCF?只是想知道是否有人可以将我指向一两篇文章。非常感谢。

4

1 回答 1

1

TransactionScope 是一个好方法,只要你控制它。所有 ADO.Net 提供程序都知道 System.Transactions 对象,因此当在 TransactionScope 下操作时,它们将正确地登记到后端事务中。

有两个陷阱:

. 您可以使用事务的 IsolationLevel 属性确定现有事务的隔离级别。

  • 分布式事务。在事务范围内,当您使用第二个ADO.Net 连接时,TransactionScope 会将它与第一个连接一起登记到分布式事务中,即使两个事务都指向同一个数据库。确保在事务范围内使用一个且仅一个连接。

从技术上讲,最后一点适用于使用任何资源管理器,但除了数据库连接之外,您不太可能使用任何其他 RM。如果你这样做了,那么加入分布式事务无论如何都是正确的行为。

于 2009-11-20T22:43:48.833 回答