我知道如何show underlying SQL query in EF Core 。但这向我展示的是:
UPDATE [tow_base]
SET [speed] = @p75,
[date_last_modified] = @p76,
[miles_per_division] = @p77,
[owner_user] = @p78
WHERE [tow_id] = @p81;
该特定查询是在 context.SaveChanges()
中生成的,因此我没有直接设置参数。
我可以在任何 SQL 客户端中执行该查询,其中包含我认为的值,并且它有效。其中许多字段还涉及值转换器,这意味着我存储在正在更新的记录中的值不会与传递给数据库 UPDATE 语句的参数类型相同。
有什么方法可以让我准确地看到这些@p
变量是什么(特别是它们声明的类型)?
最佳答案
在配置数据库上下文时,您可以使用EnableSensitiveDataLogging()
,如下所示:
services
.AddDbContext<ContactsContext>(options =>
{
options.UseSqlServer(/*whatever*/);
options.EnableSensitiveDataLogging();
});
但请注意不要共享这些日志,最好将 EnableSensitiveDataLogging
的调用包装在 #if DEBUG
或 if(app.Environment.IsDevelopment ())
.
关于c# - 如何查看传递给 EF Core 查询的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76209920/