【问题标题】:How to make EF log sql queries globally?如何在全局范围内进行 EF 日志 sql 查询?
【发布时间】:2014-02-28 00:05:25
【问题描述】:
我如何“告诉”EF 全局记录查询?我正在阅读这篇博文:EF logging,它大致说明了如何记录sql 查询。但我仍然对这个记录器有一些疑问。
- 我需要将这条线放在哪里
context.Database.Log = s =>
logger.Log("EFApp", s);?
- 可以全局设置吗?还是我必须把它放在我做数据库的任何地方
运营?
-
在“执行失败”部分,博主写道,而我
引用:
对于因抛出异常而失败的命令,输出包含来自异常的消息。
如果我不使用context.Database.Log,这也会被记录吗?
【问题讨论】:
标签:
entity-framework
logging
ef-code-first
【解决方案1】:
- 只要您希望上下文开始记录。
- 它似乎是在上下文对象上完成的,因此每次创建新上下文时都应该这样做。不过,您可以在构造函数中添加这行代码以确保它始终处于启用状态。
- 如果您不启用日志记录,它将不会记录。
【解决方案2】:
我不建议使用该功能,因为它没有理由存在于真实案例中。
那就是它只使用很多来调试代码。但是,您是否想了解更多细节...访问链接...https://cmatskas.com/logging-and-tracing-with-entity-framework-6/
在这种情况下你可以这样写代码
public void Mylog()
{
//Thats a delegate where you can set this property to log using
//delegate type Action, see the code below
context.Database.Log = k=>Console.Write("Any query SQL")
//Or
context.Database.Log = k=>Test("Any query SQL")
}
public void Test(string x){
Console.Write(x)
}
希望对你有用