首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TransactionScope对IDbTransaction

TransactionScope对IDbTransaction
EN

Stack Overflow用户
提问于 2011-03-17 09:28:55
回答 1查看 4.6K关注 0票数 14

与TransactionScope相比,使用IDbTransaction有哪些优缺点?我建议一些--请改正/填写这份清单。

TransactionScope:的优势

  1. TransactionScope支持分布式事务--您可以访问多个数据源,或者在一个transaction.
  2. TransactionScope中使用多个到一个数据源的连接更具有声明性:我们可以嵌套TransactionScopes,使用it服务层更愉快( ourselves).
  3. I'm不确定第三点是否需要处理IDbConnection和IDbTransaction,但它就是这样。IDbTransaction是特定于连接的-您必须在整个事务期间保持连接打开。我不确定是否应该在整个TransactionScope期间打开连接/连接(请澄清)。如果没有,以下工作流是可能的:启动事务,打开连接-查询-检索-关闭连接,执行资源密集型计算(保持连接关闭),打开连接-查询-检索-关闭连接,.,提交事务。但是,我认为TransactionScope不可能在提交之前保持连接的打开。

TransactionScope的缺点:

在transaction.期间不支持IsolationLevel更改

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-17 09:41:54

方便是很重要的--特别是因为它可以用来包装您无法控制的代码(因为默认情况下,您包装的代码将自动登记)。这意味着可以包装使用服务器的预先存在的库。

性能受到轻微影响,但请注意,在许多情况下,您将使用轻量级事务管理器,而不是DTC --这意味着您不需要支付全部DTC成本。

另一个缺点是嵌套事务不能回滚;任何回滚都会立即回滚外部事务。就我个人而言,我喜欢这种方法;如果事情变坏了,请尽快停止。

这是第3点中的查询;您可以在事务范围内打开/关闭任意数量的连接,而不会影响行为,但您可能会发现(取决于具体情况)事务提升到DTC。如果您与多个感知trnasaction的服务器对话,它几乎可以保证提升。

另一个不同之处是:适用不同的超时,特别是当DTC介入时。这是有意义的:长期运行的分布式事务是有害的,可能表示跨服务器死锁。死锁通常在单个服务器上检测到,但在分发时几乎不可能自动发现,因此硬超时是必不可少的。

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

https://stackoverflow.com/questions/5337175

复制
相关文章

相似问题

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