【问题标题】:How to make EF log sql queries globally?如何在全局范围内进行 EF 日志 sql 查询?
【发布时间】:2014-02-28 00:05:25
【问题描述】:

我如何“告诉”EF 全局记录查询?我正在阅读这篇博文:EF logging,它大致说明了如何记录sql 查询。但我仍然对这个记录器有一些疑问。

  1. 我需要将这条线放在哪里context.Database.Log = s => logger.Log("EFApp", s);
  2. 可以全局设置吗?还是我必须把它放在我做数据库的任何地方 运营?
  3. 在“执行失败”部分,博主写道,而我 引用:

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

如果我不使用context.Database.Log,这也会被记录吗?

【问题讨论】:

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


    【解决方案1】:
    1. 只要您希望上下文开始记录。
    2. 它似乎是在上下文对象上完成的,因此每次创建新上下文时都应该这样做。不过,您可以在构造函数中添加这行代码以确保它始终处于启用状态。
    3. 如果您不启用日志记录,它将不会记录。

    【讨论】:

      【解决方案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)
          }
      

      希望对你有用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-30
        相关资源
        最近更新 更多