我有这样的代码:当我的LINQ查询获取数据库记录为Enumerable并访问foreach循环中的记录时会发生什么?
public class Database : System.Data.Entity.DbContext
{
public DbSet<Person> Persons { get; set; }
}
var db = new Database();
var persons = db.Persons.Where(...).AsEnumerable();
foreach(var person in persons)
{
//...
}
下列哪种情况下是正确的?
- 应用由一个请求到数据库获取整个记录从
Persons
表,然后从存储器访问的每个记录。 - 在
foreach
循环的每一步中,应用程序仅从数据库中提取一条记录。
您的'db.Persons.Where(...)'将生成一个sql查询并执行where语句服务器端。这些行将流式传输给您的客户端。 (do ** not **使用'.ToList()'或者其他等, –