我已经实现了一个 DbCommandInterceptor,以便我可以记录 EF 生成的查询。
我已在 OnConfiguring 方法中将拦截器添加到我的 EF 上下文中,如下所示
optionsBuilder
.UseSqlServer(dbConnectionString)
.AddInterceptors(new DBContextInterceptorLogging(logger));
拦截器工作,我可以看到任何生成的 SELECT sql 查询。但是,我没有看到任何 UPDATE、INSERT 或 DELETE 查询被记录。
我的 DBContextInterceptorLogging 类在重写的 ScalarExecuting、NonQueryExecuting、ReaderExecuting、NonQueryExecutingAsync 方法中启动 StopWatch,在 ScalarExecuted、NonQueryExecuted、ReaderExecuted、NonQueryExecutedAsync 方法中停止 StopWatch,并将 DbCommand.CommandText 写入 ILogger<>。
我还覆盖了 CommandCreated、CommandFailed 和 CommandFailedAsync 方法。
但是,我从未在记录器输出中看到 SQL INSERT/UPDATE/DELETE。
如果我无意中设置了一些标志或过滤器?