谁能告诉我这是否可能。
我有一些代码允许用户上传/更改他们的图像,在更改发生之前,我在上传新图像之前从磁盘中删除默认/旧图像。
问题是如果删除或上传出现问题,我如何回滚两者以便返回原始图像。
我以为我可以使用 tranactionscope,但要么我没有正确使用它,要么它不适用于这种情况。
我发现的所有示例都涉及使用 2 次调用数据库,但我的代码只涉及一次调用,那就是更新。
//TODO check transactionscope works ok
using (var tran = new TransactionScope())
{
//Delete old image before updating new image
//123 bogus number to throw error
var deleteOldImage = _igmpfu.DisplayProfileDetailsForUpdate("123")
.FirstOrDefault();
if (Convert.ToString(deleteOldImage) !=
"5bb188f0-2508-4cbd-b83d-9a5fe5914a1b.png")
{
DeleteOldImage(deleteOldImage);
}
//Insert new image
var imageGuid = imageId + ".png";
bool imageUrl = _iuma.UpdateAvatar(cookieId, imageGuid);
if (imageUrl)
{
TempData["Message"] = "Image updated";
return RedirectToAction("Index", "Members");
}
tran.Complete();
}
任何帮助新手的帮助将不胜感激
//------------------------
我一直在看电脑很久,我所要做的就是
var deleteOldImage = _igmpfu.DisplayProfileDetailsForUpdate("123").FirstOrDefault();
if (deleteOldImage != null)
{
code here for writing to disk
}
我花了很长时间试图解决这个问题,这就是我所要做的:-(
感谢大家的回复。