Dapper查询可以设置超时时间吗 Dapper CommandTimeout配置

admin 百科 12
Dapper 支持通过 CommandTimeout 参数设置查询超时,单位秒,本质透传至 ADO.NET;支持方法级指定、全局默认设置及结合 CancellationToken 实现端到端超时控制,优先级为:方法参数 > CommandDefinition > 全局设置 > 连接字符串 > 驱动默认值。

Dapper查询可以设置超时时间吗 Dapper CommandTimeout配置-第1张图片-佛山资讯网

可以,Dapper 查询完全支持设置超时时间,核心就是 CommandTimeout 参数。它不是 Dapper 自己实现的“超时逻辑”,而是直接透传给底层 ADO.NET 的 SqlCommand.CommandTimeout(单位:秒),由数据库驱动层真正执行中断或抛出异常。

直接在方法调用中指定超时

这是最常用、最清晰的方式,优先级最高,会覆盖其他任何配置:

  • 同步查询:connection.Query<t>(sql, param, commandTimeout: 20)</t>
  • 异步查询:await connection.QueryAsync<t>(sql, param, commandTimeout: 30)</t>
  • 执行非查询语句:connection.Execute(sql, param, commandTimeout: 15)

全局默认超时设置

适用于大多数查询节奏一致的项目,避免每处都写重复参数:

  • 设置一次即可生效:SqlMapper.Settings.CommandTimeout = 30;
  • 该值为 int? 类型,默认是 null,表示使用数据库连接自身的默认值(通常是 30 秒)
  • 注意:它会被方法级 commandTimeout 覆盖,不会影响已显式传参的调用

配合 CancellationToken 实现更可靠的超时控制

commandTimeout 是数据库命令级超时,但无法覆盖连接建立、DNS 解析、网络抖动等环节。要实现端到端的“最多等 20 秒”,推荐组合 CancellationToken

标签: app ai dns .net

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~