как захватить любую ошибку запроса для EF? - PullRequest
0 голосов
/ 24 января 2012

Я использую EF для своего проекта. При сохранении любого изменения данных, есть центральное место для фиксации любой ошибки путем переопределения SaveChanges, например:

  public override int SaveChanges(System.Data.Objects.SaveOptions options)
        {           
            try
            {
                return base.SaveChanges(options);
            }
            catch (Exception ex)
            {
        //capture error here                
                throw ex;
            }
        }

Как перехватить все ошибки запроса (либо запроса с набором сущностей на основе linq, либо запроса с использованием SP)?

Обновление: если это невозможно для всех, возможно ли зафиксировать ошибку в одном месте для всех хранимых процедур?

Ответы [ 2 ]

1 голос
/ 24 января 2012

Это невозможно на этом уровне.Вы не получите запросы или хранимые процедуры, которые вызвали ошибку.Это может быть возможно с пользовательской оболочкой провайдера и пользовательской обработкой ошибок где-то на этом уровне, но в этом случае вы окажетесь в обратной ситуации.Вы будете знать запросы, но не будете знать исходный код, который их вызвал (вы также не узнаете задействованные наборы сущностей без обратного инжиниринга своего отображения).

0 голосов
/ 24 января 2012

Если вы хотите отслеживать запросы в контексте данных, я предлагаю EFProfiler . Хотя это коммерческий продукт, он избавит вас от многих неприятностей в будущем благодаря встроенным предупреждениям.

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