c# - 获取 NpgSql Entity Framework 查询文本

标签 c# .net postgresql entity-framework-core npgsql

我正在使用 Npgsql.EntityFrameworkCore.PostgreSQL 2.2.0。 我希望能够看到将在数据库上执行的查询。 有什么办法可以做到这一点吗?

最佳答案

如果您在服务注册时使用 .AddDbContext.AddDbContextPool,通常不需要显式配置 LoggerFactory。 EF Core 自动获取现有记录器工厂(已配置)并使用调试级别日志来记录查询。

您也可以启用

builder.EnableSensitiveDataLogging();  // << Enables query parameter/value logging
builder.EnableDetailedErrors(); // << Enables Detailed Errors such as parameter mapping errors
builder.ConfigureWarnings(warnings => 
    warnings.Log(CoreEventId.IncludeIgnoredWarning));  << Includes ignored warnings

您唯一需要做的就是相应地更改日志记录级别

"Logging": {
  "LogLevel": {
    ....
    "Microsoft.EntityFrameworkCore.Database.Command": "Information"
  }
}

或者您可以使用自定义记录器工厂

public static readonly LoggerFactory MyLoggerFactory
    = new LoggerFactory(new[]
    {
        new ConsoleLoggerProvider((category, level)
            => category == DbLoggerCategory.Database.Command.Name
               && level == LogLevel.Information, true)
    });

关于c# - 获取 NpgSql Entity Framework 查询文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54722633/

相关文章:

C# 克隆图和更新循环引用

c# - 根据选定的组合框项限制文本框输入

postgresql - 从 PostgreSQL 导出所有内容

json - 如何更新存储在 PostgreSQL 文本字段中的 json 数据?

ruby-on-rails - 用于删除反斜杠的 Postgres 命令在控制台中有效,但不适用于 ActiveRecord::Base.connection.execute

c# - 我可以在 VB.NET 中使用带有不安全代码的 C# dll 吗?

c# - ESE 列类型到 XmlSerialize 任意对象

c# - 是否可以创建具有两个同名属性的类型?

c# - 如何在没有 ASP.NET 的情况下使用 System.Net.WebSockets?

c# - 避免for循环为网格显示带来表格相关信息