.Net 2.0 应用程序中的事务——使用什么?

发布于 2024-08-11 23:35:02 字数 235 浏览 8 评论 0原文

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

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

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

I'm working on a .Net 2.0 application and need to wrap some database transactions in my code. The backend is SQL Server 2008.

I've been away from .net for a few years, the last time I did any transaction processing was in .Net 1.1 with serviced components. I know about TransactionScope, and was wondering if that's a good way to go about things now.

Also, in .Net 3.5 I assume there are other ways to do this, say with WCF? Just wondering if someone could point me toward an article or two. Thanks very much.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

绮筵 2024-08-18 23:35:02

TransactionScope 是一个好方法,只要您对其进行检查即可。所有 ADO.Net 提供程序都了解 System.Transactions 对象,因此它们在 TransactionScope 下操作时将正确登记到后端事务中。

有两个问题:

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

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

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

TransactionScope is a good way, provided you keep it in check. All ADO.Net providers are aware of the System.Transactions objects so they will enlist properly into a back end transaction when operating under a TransactionScope.

There are two gotchas:

. You can determine the
isolation level of an existing
transaction using the IsolationLevel
property of a transaction.

  • Distributed transactions. Whithin a transaction scope the moment you use a second ADO.Net connection the TransactionScope will enlist it, together with the first one, into a distributed transaciton, even when both transacitons point to the same database. Make sure you use one and only one connection within a transaciton scope.

Technically the last point applies to using any resource manager, but is unlikely you'll use any other RM than your db connections. IF you do, then enlisting into a distributed transaction is the proper action anyway.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文