c# - 如何查看传递给 EF Core 查询的参数?

标签 c# entity-framework-core

我知道如何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 DEBUGif(app.Environment.IsDevelopment ()).

关于c# - 如何查看传递给 EF Core 查询的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76209920/

相关文章:

c# - 后台 worker 可以有一个通用的方法吗?

c# - 如何将 ILogger 注入(inject) EFCore DbContext

entity-framework - EF Core - 为所有属性定义自定义列映射策略

c# - 具有多个值的 Entity Framework 核心 where 子句

c# - FileSystemWatcher 中的 LastWrite NotifyFilter

c# - 在 EPIserver 动态内容中呈现用户控件

c# - 当用户在 asp.net c# 中注销时,如何禁用浏览器中的后退按钮

c# - Lambda 表达式的工作原理

c# - EF Core 模型构建约定

entity-framework - 删除实体时如何忽略 DbUpdateConcurrencyException