【发布时间】:2017-03-27 16:28:07
【问题描述】:
我有一个怀疑是参数嗅探的查询。我想应用一个类似于 here 的拦截器,但我不希望任何其他查询受到影响。
那里使用的代码是:DbInterception.Add(new OptionRecompileHintDbCommandInterceptor());
此命令的范围是什么?如何将拦截器的范围限制为单个查询?
我的第一个想法是做这样的事情:
var interceptor = new OptionRecompileHintDbCommandInterceptor();
try
{
DbInterception.Add(interceptor);
// Do query
}
finally
{
DbInterception.Remove(interceptor);
}
但这是否相同,或者它会影响其他线程上的查询?
更新
我又想到了一个想法。如果我无法控制何时应用拦截器,有没有办法将逻辑放在拦截器的条件 if 语句中,然后向拦截器提供某种上下文,以便它知道何时应用逻辑?
【问题讨论】:
-
考虑到您可以在静态构造函数中添加它,我认为它会影响所有查询。
标签: entity-framework entity-framework-6 interceptor