我的程序需要将某些文件操作视为一个单元,案例中的一些重要步骤是:
我提出有关交易的要求是因为有时用户可能会使用VPN来访问我的网站,VPN连接可能非常不稳定。
如果第3步失败,则第1个文件和新上传的文件都将丢失。
我的一些代码:
DeleteTheOlderDT(path, FileName);
this.fuTemplateName.SaveAs(path + FileName);
_t.FileName = FileName;
if (!System.IO.File.Exists(path + FileName))
{
ArrayList ItemList = new ArrayList();
ItemList.Add("Uploading failed, please upload again!");
btlError.DataSource = ItemList;
btlError.DataBind();
_t.FileName = "";
return;
}
答案 0 :(得分:2)
我认为你只能手动执行此操作。看看Martin Fowler的UnitOfWork,你可以实现像他描述的那样
同时查看此链接可能是您的帮助
答案 1 :(得分:1)
我从来没有尝试过文件系统,但在代码项目上有很好的文章。
请查看http://www.codeproject.com/Articles/31270/A-Transactional-Repository-Implementation-in-NET
希望它能解决你的问题。
答案 2 :(得分:0)
Windows Vista和更新的支持Transactional NTFS,这可能对您有帮助。
但实际上,你应该考虑重新编写你的逻辑 - 上传到一个临时文件,如果上传成功,只删除原始文件(并重命名tempfile)。