LINQ查询没有命中数据库

时间:2015-09-15 19:52:16

标签: c# .net entity-framework linq

我遇到了一个非常简单的密码哈希检索LINQ查询的问题。问题是如果用户注销,然后尝试重新登录它,它只使用查询的缓存值而无需再次查询数据库。有问题的查询如下:

using (var db = new DataModel.DatabaseContext())
{
    return (from emp in db.Employees where emp.Username == username select emp.Password).SingleOrDefault();
}

但是当我休息时,似乎EF IS 在一个单独的线程上执行读者!那为什么我认为它不是真的在查询数据库呢?那么执行时间太短了。它弄乱了我的async方法,它基本上没有留出足够的时间来显示MessageBox(当我第一次调用该方法时工作正常)。也许数据库本身有一些瞬态选项设置?

编辑:我以为我发现了问题所在,但这只是不真实的。它比ping请求更快地在远程服务器上执行查询。 < 0.001s我难倒了

1 个答案:

答案 0 :(得分:1)

这是因为您第一次在AppDomain中创建DbContext(可能是第一次调用应用程序中的new YourDbContext())时会有很多初始化和配置,所以它需要一些时间第一次,但在那之后(当应用程序运行时)过程加速,所以你感觉不到它。