TransactionScope与C#中的文件

我一直在使用TransactionScope来处理数据库,感觉还不错。 我正在寻找的是以下内容:

using(var scope=new TransactionScope()) { // Do something with a few files... scope.Complete(); } 

但显然这不起作用 – 如果有20个文件,并且第9个文件发生exception,所有之前的8个仍然保持更改而其余的保持不变 – 不执行回滚。 那么,为文件实现类似范围的行为的最佳方法是什么?

我希望有一个简单的答案,但如果没有,你能给我一些指示,或者指点我的相关文章吗?

您正在寻找由Windows Vista引入的Transactional NTFS 。

这是一个托管包装器 。

您可以尝试Codeplex和NuGet上提供的.NET Transactional File Manager库。 它支持任何文件系统,并不是Transactional NTFS的包装器。

从项目描述:

事务性文件管理器是一种.NET API,支持在事务中包括文件系统操作,如文件复制,移动,删除,追加等。 它是System.Transaction.IEnlistmentNotification的一个实现(与System.Transactions.TransactionScope一起使用)。