私はかなり長い間この考えを心に抱いていましたが、まだ答えが見つかりません。私の DbContext は UnitOfWork クラスによって処理されます。そのため、savechanges が発生する場所が 1 か所あり、これらの厄介な例外をすべてキャッチして、1 か所で処理しています。
しかし、広く知られているように、DbContext は、SaveChanges() メソッド以外の別の場所で、他の種類の例外をスローすることがあります。たとえば、エンティティを具体化するとき。しかし、これは多くの場所で発生する可能性があり、FirstOrDefault() または ToList() 呼び出しのたびに try catch ブロックを記述し、例外をキャッチして再スローすることはオーバーヘッドになる場合があります。この例外は、接続を開くことができないことを意味する SQL タイプ、EntityCommandExecutionException などである場合があります。
したがって、例外が発生したときに DbContext オブジェクトが発生するイベントがあるのではないかと思っていたので、そのイベントをサブスクライブして、これらのシナリオでいくつかのロジックを処理できます。:)