Вы можете переопределить метод SaveChanges
вашего DbContext
.
public override int SaveChanges()
{
var deletedEntities = ChangeTracker.Entries().Where(entry => entry.State == EntityState.Deleted);
foreach (var deletedEntity in deletedEntities)
{
if (deletedEntity .Entity is MyEntity)
{
//delete the file
}
}
return base.SaveChanges();
}
Вы можете заключить удаление файла и обновление базы данных в одну транзакцию следующим образом
using (var scope = new TransactionScope())
{
//your deletion logic
myContext.SaveChanges();
scope.Complete();
}