jon*_*ers 14 .net c# transactions transactionscope
我对TransactionScope类感到好奇.
在大多数情况下,我认为它是用于数据库连接(这是我用过的).
我的问题是,您是否可以将任何代码放在TransactionScope的使用块中以使其成为事务性的?MS文档不清楚.
如果它可用于制作除数据库连接以外的代码事务,那么支持哪些代码?如果它可以使System.IO.File操作事务性,那对我来说似乎很疯狂.
Vit*_*sky 13
TransactionScope不仅适用于数据库.实现IEnlistmentNotification接口的每个组件都可以参与事务范围的两阶段提交.
以下是事务性内存存储的示例:http: //www.codeproject.com/KB/dotnet/Transactional_Repository.aspx
此外,我不确定.NET中是否存在用于事务性文件IO的组件,但是实现这样的组件非常容易 - 像Vista和Windows Server 2008这样的最新操作系统支持事务文件IO.
不,你不能通过在一个内部运行任意代码事务TransactionScope
.
正如您在评论中所指出的,System.Transactions
命名空间提供了基础结构类,以帮助创建任何资源事务.默认情况下,.NET为您链接的命名空间简介(在注释中)列出的几种操作提供资源管理器支持:"SQL Server,ADO.NET,MSMQ和Microsoft分布式事务处理协调器(MSDTC)".
事实证明,支持文件系统事务 - 虽然我只能找到NTFS(使用文件系统事务增强您的应用程序).但是,对于我的钱,该代码可能会严重使用外观.;)也许还有其他更通用的实现(或许不是 - 使文件IO事务可能需要NTFS提供的额外基础结构).
还有大量正在进行的关于对内存状态事务进行更改的研究,称为软件事务内存.Microsoft DevLabs提供了一个实现:STM.NET.