2011-06-27 80 views
7

我正在开发一个应用程序,它与SQL Server 2005数据库进行通信以执行一些存储过程。我的客户要求所有事务在C#端而不是由SQL Server管理,因此我在访问数据库时使用了System.Transactions.TransactionScope。但是,我刚刚看到了System.Transactions.Transaction数据类型,我很困惑......每种类型的主要优点/缺点是什么?我应该使用哪一个?事务和TransactionScope之间的区别

请注意,我还必须使用企业库的数据访问应用程序块。

+1

见也http://stackoverflow.com/questions/224689/transact离子在网 –

+0

看起来像重复http://stackoverflow.com/questions/542525/transactionscope-vs-transaction-in-linq-to-sql – Dave

回答

9

从MSDN:

TransactionScope类提供了一个 简单的方式来标记为 的代码块参与交易, 而不需要与交易本身互动。 A 交易范围可以选择, 自动管理环境交易 。由于其易于使用 和效率,建议您在开发事务 应用程序时使用TransactionScope类 。 当您实例化 TransactionScope时,交易 经理确定参与的哪个交易 。一旦确定, 范围总是参与该交易。该决定基于以下两个因素: 交易是否存在以及构造函数中TransactionScopeOption 参数的值 。环境交易 是您的代码在其中执行的交易 。您 可以通过调用静态 交易 类的当前属性获取对环境 交易的参考。

你可以阅读更多有关在这里:

http://msdn.microsoft.com/en-us/library/ms172152(v=vs.90).aspx

http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope(v=vs.90).aspx

大有关事务(有点老)的文章在.NET 2.0

http://msdn.microsoft.com/en-us/library/ms973865.aspx