Entity Framework - как обнаружить восстанавливаемые против невосстановимых исключений - PullRequest
5 голосов
/ 07 декабря 2011

В моем текущем проекте мы используем Entity Framework и в этом контексте для хранения данных, поступающих из удаленной системы.Когда я пытаюсь сохранить объекты, мне нужно достоверно сказать, является ли исключение чем-то, из чего можно восстановить или нет.

Чтобы уточнить, под "восстановлением из" я подразумеваю, что просто попробуйте снова выполнить операцию чуть позжебудет безопасным и потенциально будет успешным.Это может включать проблемы с сетевым подключением, перезапуск сервера БД или аналогичные ситуации.

Невозможно восстановить в этом контексте, в основном, что-либо еще, включая ограничения целостности и внутренние ошибки Entity Framework (база данных не синхронизирована сМодель EF).Можно утверждать, что некоторые ограничения целостности могут быть восстановлены, если кто-то «исправит» данные, но в этом случае будет только один писатель.

Существует ли надежный способ категоризации исключения, поступающего от EntityРамки в одну из этих двух категорий?

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

Я думаю, вам придется составить собственный список исключений, которые вы хотите проверить и обработать. Список исключений, которые вы можете классифицировать как восстанавливаемые или нет, вряд ли будет одинаковым в любых двух средах. Тем не менее, возможно, вы можете начать здесь:

Где найти список ошибок ADO.NET Entity Framework?

0 голосов
/ 09 декабря 2011

Проверьте следующие статьи -

http://msdn.microsoft.com/en-us/library/bb738618.aspx

http://msdn.microsoft.com/en-us/library/bb336792.aspx

http://msdn.microsoft.com/en-us/library/system.data.optimisticconcurrencyexception.aspx

http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/07/02/10564.aspx

Я уверен, что больше чем OptimisticConcurrencyException вызывается из .SaveChanges () - используйте

try {
} catch(ExceptionType1) {
} catch(ExceptionType2) {
} catch(ExceptionType3) {
}

оператор для отлова различных исключений ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...