【发布时间】:2012-05-30 05:22:10
【问题描述】:
我的程序需要将一些文件操作视为一个单元,一个案例中的一些重要步骤是:
- 删除目录中的文件。
- 验证一些数据。如果数据无效,回滚。
- 将文件上传到目录。如果上传失败,回滚。
- 提交更改。
我对交易提出这个要求是因为有时用户可能使用VPN访问我的网站,VPN连接可能非常不稳定。
如果第三步失败,第一个文件和新上传的文件都会丢失。
我的一些代码:
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;
}
【问题讨论】:
-
我知道我可以让用户重新上传文件。但就我而言,最好的方法是像我们在 ado.net 中一样使用事务。
-
我会重新考虑操作流程以防止头痛:首先将文件上传到临时位置,如果上传成功验证一些数据,如果数据验证执行删除并移动上传文件到正确的位置。
标签: c# asp.net .net transactions