サーバーへのファイルの保存を処理するファイル リポジトリ ライブラリがあります。物理ファイルの保存に加えて、データベース エントリも記録されます。
以下は挿入方法です。
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;
}
データベースの更新に失敗した場合は、サーバーからファイルを削除したいと考えています。これを行うには、コンテキスト操作から発生するすべての例外をキャッチし、ファイルを削除します (そして、エラーが発生するようにエラーを再スローします)。
これは正しい習慣ですか?より具体的な例外をキャッチする必要がありますか?