2017-01-12 21 views
1

Entity Frameworkによって発生したエラーを記録するベストプラクティスは何ですか?Entity Frameworkでエラーが記録される

現在私はlog4netを使用していますが、これはロギングフレームワークとは独立していると思います。今の

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

、私はのtry/catchで私のメソッド本体を固執しなければならない(と私はのtry/catchですべてのコントローラのすべてのメソッド本体を固執する必要があると思います。example APIについて

ブロック)

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); 
} 

私はtry/catchブロックにAPIのメソッド本体を置いてはいけません。

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

例外フィルタとインターセプタ実装の組み合わせが完全に必要です。どうも! –

関連する問題