Entity Framework 记录任何错误
Entity Framework log any errors
记录由 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/catch 中(并且我必须将所有控制器的所有方法体放在 try/catch 块中)
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 块中。
是否有可能在我的 DatabaseContext
class 中添加一个 OnException
,我总是可以记录 Entity Framework 抛出的任何异常?
您可以查看以下内容:
Global Error Handling in ASP.NET Web API 2
更进一步,如果您想获得有关底层命令正在发生的事情的详细信息,您也可以实施 Interceptor。
记录由 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/catch 中(并且我必须将所有控制器的所有方法体放在 try/catch 块中)
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 块中。
是否有可能在我的 DatabaseContext
class 中添加一个 OnException
,我总是可以记录 Entity Framework 抛出的任何异常?
您可以查看以下内容:
Global Error Handling in ASP.NET Web API 2
更进一步,如果您想获得有关底层命令正在发生的事情的详细信息,您也可以实施 Interceptor。