2017-01-12 8 views
1

Какова наилучшая практика для регистрации любых возникающих ошибок, вызванных Entity Framework?Entity Framework регистрирует любые ошибки

В настоящее время я использую log4net, но я думаю, что это не зависит от структуры ведения журнала.

Что касается примера API:

public class TestController : ApiController 
{ 
    [HttpGet] 
    public IEnumerable<Test> GetTests() 
    { 
     using(var context = new DatabaseContext()) 
     { 
      return context.Tests.Where(w=>w.Enabled).ToList(); 
     } 
    } 
} 

сейчас, я должен был бы придерживаться моего тела метода в Try/улове (и я бы придерживаться всех методов тела всех контроллеров в Try/улове блоки)

try 
{ 
    using (var context = new DatabaseContext()) 
    { 
     return context.Tests.Where(w=>w.Enabled).ToList(); 
    } 
} 
catch(Exception e) 
{ 
    // TODO: handle also those ValidationErrors, thrown by Entity Framework 
    // so here we get a lot more code 
    _logger.Error(e); 
} 

Но я не хочу помещать тело метода моего API в блок try/catch.

Есть ли возможность добавить OnException в мой класс DatabaseContext, где я всегда могу регистрировать любое исключение, созданное Entity Framework?

+1

проверить обработку исключений 3-го типа в http://www.dotnetcurry.com/aspnet-mvc/1068/aspnet-mvc-exception-handling –

+0

@PranavPatel haha, эта страница действительно выглядит как карри ... вы имеете в виду, что 'HandleErrorAttribute'? –

+1

@MatthiasBurger Да, вы добавляете это к глобальным фильтрам. –

ответ

2

Вы можете посмотреть в следующем:

Global Error Handling in ASP.NET Web API 2

Exception Filters

Для того, чтобы еще дальше, если вы хотите получить подробную информацию о том, что происходит с основными командами, вы можете Внесите также Interceptor.

+0

комбинация фильтра исключений и реализации перехватчика идеально подходит мне. Спасибо! –