对于测试方法,我具有“回滚”属性,用于测试使用数据库事务的方法:
public class RollbackAttribute : Attribute, ITestAction
{
private TransactionScope transaction;
public void BeforeTest(TestDetails testDetails)
{
transaction = new TransactionScope();
}
public void AfterTest(TestDetails testDetails)
{
transaction.Dispose();
}
public ActionTargets Targets
{
get { return ActionTargets.Test; }
}
}
是否可以为使用IO(创建文件夹)操作的方法创建类似的属性?
答案 0 :(得分:0)
在C#中,文件I / O实现未使用事务,因此您无法回滚它们。您能做的最好的就是为此编写自己的机制。
我不会复制其他文章,但是HERE您有一个有趣的示例,说明如何实现自己的事务存储库。
更有趣的是,我发现nuget包具有以下实现:LINK
这里有用法示例:
// Wrap a file copy and a database insert in the same transaction
TxFileManager fileMgr = new TxFileManager();
using (TransactionScope scope1 = new TransactionScope())
{
// Copy a file
fileMgr.Copy(srcFileName, destFileName);
// Insert a database record
dbMgr.ExecuteNonQuery(insertSql);
scope1.Complete();
}