儘管 SSMS 中的 SQL 高效,但您的 EF 6 查詢超時問題建議參數嗅探。要解決此問題,請考慮以下事項:
EF 可以嵌入「OPTION RECOMPILE」提示嗎?
是的,EF 6 允許在執行之前攔截 SQL 指令。您可以透過實作 IDbCommandInterceptor 新增「OPTION RECOMPILE」提示。以下是一個範例實作:
public class OptionRecompileHintDbCommandInterceptor : IDbCommandInterceptor { public void AddQueryHint(IDbCommand command) { if (command.CommandType != CommandType.Text || !(command is SqlCommand)) return; if (command.CommandText.StartsWith("select", StringComparison.OrdinalIgnoreCase) && !command.CommandText.Contains("option(recompile)")) { command.CommandText = command.CommandText + " option(recompile)"; } } // Implementation of other interface methods... }
要使用此攔截器,只需在開始時將其添加到您的應用程式中即可:
DbInterception.Add(new OptionRecompileHintDbCommandInterceptor());
更多注意事項
以上是如何解決參數嗅探導致的 EF 6 查詢逾時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!