是否有一种方法可以在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.
}
答案 0 :(得分:1)
没有明确的方法可确保您可以通过DbDataReader滚动集合。
了解EF基类的继承层次结构,在testExtensions.kt
或foreach
上使用DbSet<T>,IQueryable<T>
的每次使用,避免使用任何会触发查询延迟执行的直接方法(例如, IEnumerable<T>
将阻止将所有记录加载到内存中,以便在枚举器的每个“ MoveNext()”处都使用基础ToList()
的“ Read()”。