EF Core中SQL跟踪期间丢失的参数值

asa*_*sat 24 c# entity-framework entity-framework-core .net-core

我根据这篇文章实现了一种从EF Core跟踪SQL查询的方法:https://docs.microsoft.com/en-us/ef/core/miscellaneous/logging.并且跟踪查询参数有问题.当我在DbParameterLogData的所有值中记录Log事件时,我只看到问号,而不是我传递给查询的实际值.

在此输入图像描述

我正在使用VS 2015.谢谢!

Iva*_*oev 47

这是EF Core的默认行为(填充DbParameterLogData.Value属性"?").

为了获得真实的参数值,您需要使用以下方法启用敏感数据记录DbContextOptionsBuilder.EnableSensitiveDataLogging:

允许应用程序数据包含在异常消息,日志记录等中.这可以包括分配给实体实例的属性的值,发送到数据库的命令的参数值以及其他此类数据.如果您根据此数据的敏感度采取了适当的安全措施,则只应启用此标志.

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.EnableSensitiveDataLogging();
    // ...
}
Run Code Online (Sandbox Code Playgroud)

  • 有时这会导致`MissingMethodException`.在这种情况下,您应该在`ConfigureServices()`中调用它:`services.AddDbContext <MyDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")).EnableSensitiveDataLogging())` (8认同)