0

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

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
}

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

4

1 回答 1

2

请记住,使用 IQueryable 时,由于延迟执行,每次枚举查询时(即运行.Count().ToList()等)都会对数据库进行评估和执行查询。

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

于 2013-11-05T17:23:37.413 回答