实体框架6或核心-使用“ DataReader”(如模式)读取查询结果

时间:2018-08-13 20:45:56

标签: entity-framework-6 entity-framework-core datareader

是否有一种方法可以在EF DBContext上以“类型化数据读取器”的形式获取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.
}

1 个答案:

答案 0 :(得分:1)

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

了解EF基类的继承层次结构,在testExtensions.ktforeach上使用DbSet<T>,IQueryable<T>的每次使用,避免使用任何会触发查询延迟执行的直接方法(例如, IEnumerable<T>将阻止将所有记录加载到内存中,以便在枚举器的每个“ MoveNext()”处都使用基础ToList()的“ Read()”。