我正在开发一个与 SQL Server 2005 数据库通信的应用程序来执行一些存储过程。我的客户要求所有事务由 C# 进行管理,而不是由 SQL Server 进行管理,因此在访问数据库时我使用了 System.Transactions.TransactionScope
。然而,我刚刚看到了 System.Transactions.Transaction
数据类型,我感到困惑...每种类型的主要优缺点是什么?我应该使用哪一种?
请注意,我还必须使用企业库的数据访问应用程序块。
我正在开发一个与 SQL Server 2005 数据库通信的应用程序来执行一些存储过程。我的客户要求所有事务由 C# 进行管理,而不是由 SQL Server 进行管理,因此在访问数据库时我使用了 System.Transactions.TransactionScope
。然而,我刚刚看到了 System.Transactions.Transaction
数据类型,我感到困惑...每种类型的主要优缺点是什么?我应该使用哪一种?
请注意,我还必须使用企业库的数据访问应用程序块。
来自 MSDN 的介绍:
TransactionScope 类提供了一种简单的方式,用于将代码块标记为参与事务,而无需与事务本身交互。事务范围可以自动选择和管理环境事务。由于其易于使用和高效性,建议在开发事务应用程序时使用 TransactionScope 类。当您实例化 TransactionScope 时,事务管理器确定要参与的事务。一旦确定,在该事务中始终参与该范围。决策基于两个因素:是否存在环境事务以及构造函数中的 TransactionScopeOption 参数的值。环境事务是您的代码执行的事务。您可以通过调用 Transaction 类的静态 Current 属性来获取对环境事务的引用。
您可以在此处阅读更多信息:
http://msdn.microsoft.com/zh-cn/library/ms172152(v=vs.90).aspx
http://msdn.microsoft.com/zh-cn/library/system.transactions.transactionscope(v=vs.90).aspx
关于 .NET 2.0 中的事务的很棒(有点过时)文章: