首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# System.Transactions Vs TransactionScope

C# System.Transactions Vs TransactionScope
EN

Stack Overflow用户
提问于 2020-01-13 12:55:11
回答 1查看 1.7K关注 0票数 1

基于本文这里以及问题:事务与TransactionScope的区别我们知道TransactionScope

TransactionScope类提供了一种简单的方法,可以将代码块标记为参与事务,而无需与事务本身交互。事务范围可以自动选择和管理环境事务。由于它的易用性和效率,建议您在开发事务应用程序时使用TransactionScope类。

System.Transactions.Transaction

事务类包含实现用于登记的资源管理器的开发人员使用的方法。它还提供了克隆事务和控制当前事务上下文的功能。

这里的问题是,是否有一种方法来选择两者中的哪一种。显而易见的答案是,如果您没有理由使用显式,那么使用隐式事务,但这个原因是什么呢?

显式事务是否存在,只是为了支持遗留实现?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-03 18:50:53

环顾各种资源,我无意中发现以下部分回答了我的问题:处理EF 6中的事务

基于此文档(主要基于EF,但限制似乎无论如何都适用):

TransactionScope方法仍然存在一些限制: 需要.NET 4.5.1或更高版本才能使用异步方法。

  • 它不能在云场景中使用,除非您确定只有一个连接(云场景不支持分布式事务)。
  • 它不能与前面各节的Database.UseTransaction()方法相结合。
  • 如果您发出任何DDL且尚未通过MSDTC服务启用分布式事务,则会引发异常。

TransactionScope方法的优势:

  • 如果您与给定数据库建立了多个连接,或者将到一个数据库的连接与同一事务中的另一个数据库的连接相结合,则它将自动将本地事务升级到分布式事务(注意:必须将MSDTC服务配置为允许分布式事务工作)。
  • 易于编码。如果您希望事务是环境的,并且在后台隐式处理,而不是在您的控制下显式处理,那么TransactionScope方法可能更适合您。

由于第一篇文章不再受支持,而EF 6文章是较新的+ @MarcGravell的注释,我假设这个决定可以归结为上面的EF 6文章的优缺点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59717075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档