17

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

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

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

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

4

2 回答 2

8

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

这是一个托管包装器

于 2010-02-18T14:46:05.920 回答
4

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

从项目描述:

Transactional File Manager 是一个 .NET API,支持在事务中包含文件系统操作,例如文件复制、移动、删除、追加等。它是 System.Transaction.IEnlistmentNotification 的实现(与 System.Transactions.TransactionScope 一起使用)。

于 2015-08-23T03:48:58.510 回答