Меня эта мысль давно посещает, и я до сих пор не могу найти ответа. Мой DbContext обрабатывается классом UnitOfWork. Итак, у меня есть одно место, где происходят изменения сохранения, и я перехватываю все эти неприятные исключения и обрабатываю их в одном месте.
Но, как известно, DbContext иногда может генерировать другие типы исключений в других местах, помимо метода SaveChanges(). Например, при материализации сущностей. Но это может произойти во многих местах, и иногда написание блоков try catch для каждого вызова FirstOrDefault() или ToList(), а также перехват и повторная выдача исключений являются накладными расходами. Иногда это исключения могут быть типа SQL, что означает, что соединение не может быть открыто, EntityCommandExecutionException или другие.
Поэтому мне было интересно, есть ли какое-либо событие, которое объект DbContext срабатывает при возникновении исключения, поэтому я могу подписаться на это событие и обработать некоторую логику в этих сценариях. :)