You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在EF Core SqlServer重试策略的重试间修改DbCommand SQL?

EF Core 重试策略中追加OPTION(RECOMPILE)规避参数嗅探超时问题

我希望在EF Core的SqlServerRetryingExecutionStrategy重试过程中,修改执行的SQL语句,给DbCommand的CommandText追加OPTION(RECOMPILE)查询提示,以此规避参数嗅探引发的客户端超时问题。

我尝试了三种方案:

  • 继承SqlServerRetryingExecutionStrategy并重写ExecuteAsync,但无法访问DbCommand;
  • 实现IDbCommandInterceptor,但CommandId在重试间不统一,无法追踪;
  • 借助AsyncLocal<T>在重试策略与拦截器间传递状态,已实现需求,但存在两个疑问:
    • 是否有更优的实现方式?
    • 该AsyncLocal<T>方案是否兼容同步LINQ调用?

内容的提问来源于stack exchange,提问作者Prathamesh Katkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 03:55:54