如何全局制作EF日志sql查询?

时间:2014-02-28 00:05:26

标签: entity-framework logging ef-code-first

如何“告诉”EF全局记录查询?我正在阅读这篇博文:EF logging,它总体上讲述了如何记录sql个查询。但是我对这个记录器还有一些问题。

  1. 我需要在哪里放置此行context.Database.Log = s => logger.Log("EFApp", s);
  2. 可以全球设定吗?或者我必须把它放在我做数据库的任何地方 操作
  3. 在“失败的执行”部分中,博客写了这个,而我 引用:

      

    对于因抛出异常而失败的命令,输出包含异常消息。

  4. 如果我不使用context.Database.Log

    ,是否也会记录此信息

2 个答案:

答案 0 :(得分:0)

  1. 每当您希望上下文开始记录时。
  2. 它似乎是在上下文对象上完成的,因此每次创建新上下文时都应该这样做。您可以在构造函数中添加这行代码,以确保始终启用它。
  3. 如果您不启用日志记录,则不会记录。

答案 1 :(得分:0)

我不建议使用该功能,因为在实际案例中没有理由存在。 多数用它来调试代码。但是,你想知道更多细节......访问链接... 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)
    }

我希望那是有用的