我已经按照这篇文章实现了从 EF Core 追踪 SQL 查询的方法:https://learn.microsoft.com/en-us/ef/core/miscellaneous/logging。但是在追踪查询参数时遇到了问题。当我接收到日志事件时,在所有的 DbParameterLogData 的值中,我只看到问号而不是我传递给查询的实际值。
我正在使用 VS 2015。
![enter image description here](https://istack.dev59.com/kDq1h.webp)
这是 EF Core 的默认行为 (用 DbParameterLogData.Value
属性填充 "?"
)。
为了获取真正的参数值,您需要通过使用 DbContextOptionsBuilder.EnableSensitiveDataLogging
方法启用 敏感数据记录:
启用应用程序数据包括在异常消息、日志等中。这可能包括分配给实体实例属性的值,发送到数据库的命令的参数值和其他此类数据。只有在根据此数据的敏感性设置了适当的安全措施时,才应启用此标志。
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.EnableSensitiveDataLogging();
// ...
}
MissingMethodException
,应在ConfigureServices()
中调用它:services.AddDbContext<MyDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")).EnableSensitiveDataLogging())
。 - user1289580
"?"
。你是如何构建查询的? - Marc Gravell