Мне известно о двух разных сценариях, при которых исключения могут возникать при работе с Entity Framework DbContext
:
- Перечисление запроса (может вызвать
EntityCommandExecutionException
) - Вызов
SaveChanges
(может вызватьDbUpdateException
)
В одном экземпляре DbContext
, я хочу поймать эти исключения, попытаться восстановить, если это применимо, а затем повторить операции.
В частности, если вызов SaveChanges
выдает исключение из-за тупика, я хотел бы повторить вызов SaveChanges
. Я уже знаю, как обнаружить эту ситуацию и выполнить повтор.
Я видел этот ответ здесь, что указывает на то, что соединение SQL не должно использоваться после тупика. Это означает, что я должен перезапустить все DbContext
и операцию более высокого уровня для восстановления из таких исключений.
Что я не уверен в том, можно ли продолжать использовать DbContext
после того, как он создал исключение, такое как это, Он войдет в непригодное состояние? Будет ли он работать, но не работает правильно? Будет ли SaveChanges
больше не транслироваться?