问题标签 [transactionscope]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
collections - TransactionScope 和回滚对象状态
我正在寻找设计问题的解决方案。这将需要一些解释。我会发布代码,但这会使它变得更长。
我有一个自定义的通用集合,用于根据需要保存业务对象。为了便于参考,调用业务对象BO和通用集合GC。在 GC 内部,我有一个私有集合,其中包含已标记为删除的那些业务对象。将此私人收藏称为PDC。
我可以在任何时候拥有任意数量的 GC,每个都有自己的 PDC,以及不在任何集合中的其他 BO。
当我保存更改时,我会遍历所有 BO 和 GC,并让每个人都保存他们的更改。这发生在 TransactionScope 中,因此如果无法正确保存,我会回滚数据库更改。
当 GC 保存时,我的 PDC 状态存在问题。GC 首先保存所有更新的 BO,然后删除 PDC 中与 BO 关联的记录,然后清除所有 BO 的 PDC。我这样做是为了让 GC 的状态正确地反映数据库的新状态。
现在假设一个或多个 GC 成功保存后 BO 或 GC 保存失败。TransactionScope 执行回滚。从数据库中删除的记录已恢复,但部分/全部 PDC 已被清除,状态信息丢失。
所以这是我的困惑:如何在提交发生之前保留 PDC 信息,然后保证清除适当的集合?
TransactionScope 没有我可以捕捉到的事件来让我知道何时提交了更改。任何给定事务都可能影响许多 BO 和 GC,因此我不能将事务限制为一次处理一个 GC。
有什么建议么?
.net - Oracle 上的 .NET TransactionScope
我们在 Oracle 上使用 DAAB 和 TransactionScope。我们的应用程序仅管理与 1 个数据库的所有连接。这种类型的实现似乎需要“Oramts.dll”。有没有在没有 MTS 的情况下使用 DAAB 和 TrasnsactionScope 的方法?
谢谢!
.net - TransactionScope:它变得更好了吗?
当 TransactionScope 首次出现时,我遇到了一些严重的问题,无法让它在我的开发机器 (XP) 和我们的数据库服务器 (Windows Server 2003) 之间工作。
当我更深入地研究它时,这似乎是一个棘手且普遍的问题,有可能在生产中成为头疼的问题,所以我决定不以这种方式处理事务(尽管我非常喜欢这种语法并且我真的很想要它去工作)。
这些问题仍然存在还是可以安全使用?你现在经常使用这个没有问题吗?
非常感谢!
注意:现在已经很久了,但我认为这个问题与分布式事务协调器有关。我摆弄了很长时间,但始终无法使其正常工作。
c# - 有没有办法创建 ADO.NET 连接并忽略环境事务?
我有一种情况,我在具有 TransactionScopeRequired=true 的 WCF 服务中运行,这意味着总会有环境事务。
但是,我需要在应用程序的整个生命周期内启动一个新连接,这意味着我不能让它使用环境事务。
关于如何做到这一点的任何想法?这样做会自动使用环境事务:
实际上,这样说可以使示例更简单:
我不希望我的连接实际拿起 TransactionScope。在实际代码中,在范围内执行数据库操作的还有很多事情要做,我只有 1 需要在事务范围的生命周期之后保留。
我想真实情况值得一提。这里实际发生的是,在 WCF 服务调用期间,我使用 Enterprise Library Caching 块将对象添加到缓存中。此对象是一个数据表,但也保持与已设置持续通知的 Oracle 的打开连接。这使我能够在底层 Oracle 表发生更改时自动刷新我的缓存数据集。
数据缓存项可以被任意数量的 WCF 初始化线程访问,所有这些线程都在它们自己的事务范围内运行。我想您可以将其视为将 OracleConnection 对象放入缓存中。更好的文本/示例代码块如下:
重点是我有一个跨多个线程和事务范围的连接具有很长的生命周期。
sql-server - 重构 ADO.NET - SqlTransaction 与 TransactionScope
我“继承”了一个小的 C# 方法,它创建一个 ADO.NET SqlCommand 对象并循环遍历要保存到数据库的项目列表(SQL Server 2005)。
现在,使用传统的 SqlConnection/SqlCommand 方法,为了确保一切正常,这两个步骤(删除旧条目,然后插入新条目)被包装到 ADO.NET SqlTransaction 中。
现在,我最近阅读了很多关于 .NET TransactionScope 类的内容,我想知道,这里的首选方法是什么?通过切换到使用,我会获得任何东西(可读性、速度、可靠性)吗?
你更喜欢什么,为什么?
马克
subsonic3 - subsonic 3 - 该操作对交易状态无效
我正在尝试以下代码
当我到达 ud.save() 时,我收到错误“操作对于事务状态无效。---> System.Transactions.TransactionPromotionException:尝试提升事务时失败'
如果我注释掉它工作正常的事务部分,是不是 .SingleOrDefault 与数据库断开连接?
谢谢
c# - 无法访问已处置的对象。交易
我们正在使用实体框架并在事务范围内运行单元测试。我们最初在标题中得到了错误。
我已经设法隔离了一些问题。
我们目前得到的错误是“该操作对事务状态无效..”
如果我删除事务范围2,一切正常。
如果我将范围 2 标记为环境事务,它也可以正常工作。
c# - TransactionScope 的层次结构
是否可以有交易范围的层次结构?
如果外部事务范围进行了 dispose,那么内部事务范围中所做的更改会发生什么?
我的特殊问题是我有运行具有事务范围的代码的测试代码。当我调用具有事务范围的第二组代码时,我得到“无法访问已处置的对象。事务”。可能是内部事务范围的处置也处置外部事务范围。
c# - 如何实现一个知道 TransactionScope 的类?
我有一个 WCF 服务,它正在跨几个数据库和 Active Directory 执行一些更新。由于 Active Directory 无法支持事务,因此我想在“DirectoryRepository”类中实现,该类将在发生回滚时执行补偿操作。
我的代码正在使用 TransactionScope ...
我的 DirectoryRepository 如何知道任何当前事务并在回滚时收到通知?
c# - 如何处理 BL 中的嵌套数据上下文?
这是嵌套 DataContext 的示例(未经测试)。当一个 TransactionScope 添加到我们的小实验中时,问题就开始了(如上所示)。AddFolder 函数中的第一个 AddFile 会将事务升级到 DTC(这绝对是不好的),因为 AddFile 初始化了新的 DataContext,从而打开了与 DB 的第二个连接。
- 如何使用不会发生 DTC 使用的嵌套 DataContext?
- 这一切都是错的吗?我应该以不同的方式使用 DataContext 吗?