首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TransactionScope的层次结构

TransactionScope的层次结构
EN

Stack Overflow用户
提问于 2009-08-26 12:34:37
回答 3查看 1.2K关注 0票数 3

有可能有一个事务作用域的层次结构吗?

如果外部事务作用域进行了dispose,那么内部事务作用域中所做的更改会发生什么?

我的特殊问题是,我的测试代码运行具有事务作用域的代码。当我调用具有事务作用域的第二组代码时,我得到"Cannot access a disposed Object.Transaction“。是否内部事务作用域的处置也在处置外部事务作用域。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-26 12:53:12

我怀疑这是正在发生的事情。如果需要,只要底层技术支持分布式事务,就可以嵌套TransactionScopes。例如,如果您启动一个事务并更新数据库A中的一些数据,然后调用一个函数,并且在该函数内部创建一个新的TransactionScope并将一些数据插入到数据库B中,那么内部事务将使用已经打开的“环境”事务。但是,要使其正常工作,您需要运行分布式事务处理协调器(对于SQL Server)。此外,SQL Server 2005和更高版本能够将事务作为常规事务启动,并在需要时将其升级为分布式事务,而SQL 2000将把所有这些事务都作为分布式事务启动,因为它不能升级它们。

当您有嵌套的事务时,整个事务直到最外层的事务被提交时才会提交。

这是some more info

看看TransactionScopeOption;它决定了嵌套事务如何与外部事务交互。

票数 3
EN

Stack Overflow用户

发布于 2009-08-26 12:54:09

当外部事务失败时,我们将回滚所有内部事务。如果您提交和内部,并处理外部,内部仍然回滚。事实上,内部不会提交,除非外部通过提交来允许它。

你在提交外部的那个,不是吗?有关这方面的一篇好论文,请参阅here

票数 2
EN

Stack Overflow用户

发布于 2009-10-11 13:17:22

是的,可以有一个事务作用域的层次结构。This blog post解释了它们是如何工作的,特别是内部事务作用域应该如何实例化以及事务如何完成和提交。

记住事务和事务作用域之间的区别是很重要的--默认情况下(即在不考虑TransactionScopeOption的情况下),即使是嵌套事务作用域,也只能使用单个事务。

有关"disposed“错误消息,请参阅this question

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

https://stackoverflow.com/questions/1334366

复制
相关文章

相似问题

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