在我的网页项目中,我正在使用 EF6 ,我想记录生成的SQL以进行调试。
我也使用log4net来处理日志,所以我正在寻找一种方法将它们集成在一起。
实现这一目标的正确方法是什么?
答案 0 :(得分:6)
目前我正在使用这种方法:在我的BaseController
我有类似的东西:
public class BaseController
{
protected MyDbContext DataContext { get; set; }
protected readonly ILog logger;
public BaseController()
{
DataContext = new MyDbContext();
logger = LogManager.GetLogger(GetType());
DataContext.Database.Log = (dbLog => logger.Debug(dbLog));
// ...
}
//...
}
我不知道这是不是最好的方式,但它有效......
答案 1 :(得分:2)
如果有人在2年后仍在搜索解决方案:
@davioooh的解决方案让我得到了类似的东西(如果你可能使用Entity Framework而不是WebApi,或者不想使用BaseController
- 类):
在继承DbContext
时,您也可以在构造函数中执行此操作:
public class MyContext:DbContext
{
private readonly ILog _logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public MyContext()
: base("<connectionstring>")
{
Database.Log = log => _logger.Debug(log);
}
}