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