我遇到了一个非常简单的密码哈希检索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我难倒了
答案 0 :(得分:1)
这是因为您第一次在AppDomain中创建DbContext
(可能是第一次调用应用程序中的new YourDbContext()
)时会有很多初始化和配置,所以它需要一些时间第一次,但在那之后(当应用程序运行时)过程加速,所以你感觉不到它。