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

C# - System.Transactions.TransactionScope
EN

Stack Overflow用户
提问于 2010-02-16 14:07:39
回答 2查看 11.8K关注 0票数 14

我对TransactionScope课程很好奇。

在大多数情况下,我假设它是用于数据库连接的(这正是我所使用的)。

我的问题是,您是否可以在TransactionScope的using-块中放置任何代码以使其具有事务性?MS文档对此尚不清楚。

如果它可以用于使数据库连接以外的代码具有事务性,那么支持哪些代码?如果它能使System.IO.File操作具有事务性,我会觉得很疯狂。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-16 15:22:52

TransactionScope不仅适用于数据库。实现IEnlistmentNotification接口的每个组件都可以参与事务范围的两阶段提交。

下面是内存中事务存储的一个示例:Repository.aspx

另外,我不确定.NET中是否有用于事务性文件IO的组件,但是实现这样的组件相当容易--像Vista和Windows 2008这样的最新操作系统支持事务文件IO。

票数 13
EN

Stack Overflow用户

发布于 2010-02-16 14:09:15

不,不能通过在TransactionScope中运行任意代码来使其具有事务性。

正如您在注释中所指出的,System.Transactions命名空间提供了基础结构类,以帮助使任何资源具有事务性。。默认情况下,.NET为几种操作提供资源管理器支持,在您链接的名称空间介绍(在注释中)中列出了这些操作:“Server、ADO.NET、MSMQ和Microsoft分布式事务协调器(MSDTC)”。

结果是,对文件系统事务的支持--尽管我只能在NTFS (使用文件系统事务增强应用程序)中找到它。不过,为了我的钱,这段代码可能真的需要一个门面。)也许还有其他更通用的实现(或者不允许文件IO事务性可能需要NTFS提供的额外基础设施)。

还有大量关于对内存中状态事务进行更改的研究,称为软件事务存储器。微软DevLabs提供了一个实现:STM.NET

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

https://stackoverflow.com/questions/2273419

复制
相关文章

相似问题

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