如何在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
相关产品推荐
相关产品推荐

