0
我有一個文件存儲庫庫,它處理將文件保存到服務器上。隨着保存物理文件,數據庫條目也被記錄在。處理實體框架SaveChanges()異常進行清理
下面是插入方法。
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;
}
如果數據庫更新失敗,那麼我想從服務器上刪除文件。我通過捕獲上下文操作中發生的任何異常並刪除文件(並重新拋出錯誤以使其可能冒泡)來做到這一點。
這是正確的做法嗎?我應該捕捉更具體的例外嗎?
這個問題問如何捕捉到所有的實體框架例外。 http://forums.asp.net/t/1829033.aspx/1 –
請注意,如果發生系統故障,您可能仍會以磁盤上的文件結束,但在數據庫中沒有記錄。 – Marwijn
如果發生併發異常或唯一約束衝突,其他人可能在當前用戶之前添加了'DataFile',因此您不想從磁盤刪除該文件。 –