我有一个登录页面,它执行一个非常简单的 EF 查询以确定用户是否有效。在第一次运行时,此查询大约需要 6 秒才能运行。在随后的运行中,它只需要不到一秒钟的时间。
我看过一篇关于使用应用程序自动启动的文章,我的问题是:有没有办法触发这个查询来导致任何缓存需要发生而不实际调用查询,或者我有必要只用一组虚拟参数调用查询?
编辑:当我说六秒时,我指的是获取查询所需的时间。代码看起来像这样(注意在这种情况下,contactID 是一个可为空的 int 并设置为 null):
return from contact in _context.Contacts
where contact.District == Environment.District &&
contact.ContactId == (contactID ?? contact.ContactId)
select contact;
这是一个 SqlServer 2008,我运行了一个分析器来检查 SQL,它返回的持续时间是 41 毫秒,用于最终执行的查询。6 或 7 秒的延迟发生在查询甚至到达 SQL 之前。我现在正在尝试设置一瞥,看看它是否可以为我提供有关可能同时发生的其他事情的更多详细信息。