我有一个文件存储库,用于处理将文件保存到服务器上。除了保存物理文件,还记录了一个数据库条目。
下面是插入方法。
public DataFile InsertFile(string fileName, byte[] fileBytes)
{
File.WriteAllBytes(Path.Combine(FileRepPath, fileName), fileBytes);
DataFile dataFile = NewDataFile(
fileName,
fileBytes.Length
);
try
{
using (MyEntities context = new MyEntities())
{
context.DataFiles.Add(dataFile);
context.SaveChanges();
}
}
catch (Exception)
{
File.Delete(Path.Combine(FileRepPath, fileName));
throw;
}
return dataFile;
}
如果数据库更新失败,那么我想从服务器中删除该文件。我通过捕获上下文操作中发生的任何异常并删除文件(并重新抛出错误以便它可以冒泡)来做到这一点。
这是正确的做法吗?我应该捕捉更具体的例外吗?