C#Query可以在上下文中独立更改

时间:2013-11-05 17:17:54

标签: c# .net linq entity-framework orm

我有一个棘手的问题。我已经看到查询中的记录数可以更改而无需重新运行相同的查询。 下面的代码显示了该场景:

using (var db = new MyContext()) {
    var query = from e in db.Entities select e;

    //here the query.Count is equals to 100 for example

    Thread.Sleep(10000);

    //after some times the db has been populated

    //here the query.Count is equals to 200 for example without run again the query
}

我的问题是:为什么会这样?为什么它似乎是查询结果和数据层之间的自动绑定?实体框架在后台工作以更新查询结果? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

请记住,对于IQueryable,感谢deferred execution,每次枚举时,都会对数据库评估并执行查询,也就是说,当您运行.Count()时,{{1}等等。

如果有疑问,请使用分析器(例如MiniProfilerEF Profiler)来准确了解您何时访问数据库。