Entity framework 实体框架核心3.1 DbCommandInterceptor仅记录选择查询

Entity framework 实体框架核心3.1 DbCommandInterceptor仅记录选择查询,entity-framework,.net-core,dbcommand,Entity Framework,.net Core,Dbcommand,我已经实现了一个DbCommandInterceptor,这样我就可以记录EF生成的查询 我已经在onconfig方法中将拦截器添加到我的EF上下文中,如下所示 optionsBuilder .UseSqlServer(dbConnectionString) .AddInterceptors(new DBContextInterceptorLogging(logger)); 拦截器在我所能看到的任何生成的SELECTSQL查询中都能工作。但是,我没有看到

我已经实现了一个DbCommandInterceptor,这样我就可以记录EF生成的查询

我已经在onconfig方法中将拦截器添加到我的EF上下文中,如下所示

    optionsBuilder
        .UseSqlServer(dbConnectionString)
        .AddInterceptors(new DBContextInterceptorLogging(logger));
拦截器在我所能看到的任何生成的SELECTSQL查询中都能工作。但是,我没有看到记录任何更新、插入或删除查询

My DBContextInterceptorLogging类正在重写的ScalarExecuting、NonQueryExecuting、ReaderExecuting、NonQueryExecutingAsync方法中启动秒表,并且在ScalarExecuted、NonQueryExecuted、ReaderExecuted、NonQueryExecutedAsync方法中停止秒表,DbCommand.CommandText将写入ILogger

我还重写了CommandCreated、CommandFailed和CommandFailedAsync方法

但是,我从未在记录器输出中看到SQL INSERT/UPDATE/DELETE


如果我无意中设置了一些标志或过滤器?

我通过本文找到了解决方案:

该解决方案没有添加拦截器,而是使用LoggerFactory和自定义ILogger实现来提取有关生成SQL的关键信息

从这里,我可以写出SQL、参数,还可以看到执行查询所花费的时间