有谁知道 DbDataReaders 是如何工作的。我们可以使用 SqlDataReader 作为示例。
当您执行以下操作时
cmd.CommandText = "SELECT * FROM Customers";
var rdr = cmd.ExecuteReader();
while(rdr.Read())
{
//Do something
}
数据读取器是否在内存中拥有所有行,或者它只是抓取一个,然后当调用 Read 时,它会去数据库并抓取下一个吗?似乎只是将一个带入内存会带来不好的性能,但是将它们全部带入会使调用 ExecuteReader 需要一段时间。
我知道我是对象的消费者,他们如何实现它并不重要,但我只是好奇,我想我可能会在 Reflector 上花几个小时来了解它在做什么,所以想我会问一个可能知道的人。
我只是好奇是否有人有想法。