select * from table1 with(index=IX_table1_1)
Linq to sql using ado.net entity would like to write the above code. I could not find en
Solution is simple. Let's add an Interceptor !!!
public class HintInterceptor : DbCommandInterceptor
{
private static readonly Regex _tableAliasRegex = new Regex(@"(?AS \[Extent\d+\](?! WITH \(*HINT*\)))", RegexOptions.Multiline | RegexOptions.IgnoreCase);
[ThreadStatic] public static string HintValue;
public override void ScalarExecuting(DbCommand command, DbCommandInterceptionContext
The regex could be better, i know. Let's register our Interceptor in Config class
public class PbsContextConfig : DbConfiguration
{
public PbsContextConfig()
{
this.AddInterceptor(new HintInterceptor());
}
}
Let's make nice Hint Extension for DbSet
public static class HintExtension
{
public static DbSet WithHint(this DbSet set, string hint) where T : class
{
HintInterceptor.HintValue = hint;
return set;
}
}
How to use ?
context.Persons.WithHint("INDEX(XI_DOWNTIME_LOCK)").Where( x => x.ID == ....
Modifications are welcomed!