Entity Framework 6 or Core - 使用 "DataReader" 类似模式读取查询结果

Entity Framework 6 or Core - Read query result with a "DataReader" like pattern

有没有办法在 EF DBContext 上以 'Typed Data Reader' 的形式获取 LINQ 查询结果,这样当我读取 de IQueryable 结果(例如使用 .ToList())时,我不将所有结果存入内存?

我期待这样的事情(或类似的事情):

var personQueryResult=dbContext.People.Where(…).Select(…).AsDataReader();
foreach(person in personQueryResult){
   //Here I expect that person is typed of the People Dbset<T> type, ex. a Person type and i can do:

person.Name="...";
person.Surname="...";
//etc.
}

没有明确的方法可以确保您可以通过 DbDataReader 滚动集合。

了解 EF 基 类 的继承层次结构,foreachDbSet<T>,IQueryable<T>IEnumerable<T> 上的每次使用,避免任何会触发查询延迟执行(例如 ToList())将阻止加载内存中的所有记录,以便在枚举器的每个 "MoveNext()" 将使用底层 DbDataReader 的 "Read()" .