SqlDataReader/DbDataReader实现问题

Jos*_*ose 3 sql sqldatareader dbdatareader

有谁知道DbDataReaders如何实际工作.我们可以使用SqlDataReader作为示例.

当您执行以下操作时

cmd.CommandText = "SELECT * FROM Customers";

var rdr = cmd.ExecuteReader();

while(rdr.Read())
{
  //Do something
}
Run Code Online (Sandbox Code Playgroud)

数据读取器是否具有内存中的所有行,或者它只是抓取一个,然后当调用Read时,它是否会转到db并抓住下一个?似乎只是将一个内存带入内存将是糟糕的性能,但带来所有这些将使得它需要一段时间调用ExecuteReader.

我知道我是这个对象的消费者,并且实现它并不重要,但我只是好奇,我想我可能会花几个小时在Reflector中来了解它在做什么,所以我想问一个可能知道的人.

如果有人有想法,我只是好奇.

Rha*_*ody 5

如前所述这里:

使用DataReader可以通过在数据可用时立即检索数据来提高应用程序性能,并且(默认情况下)在内存中一次只存储一行,从而降低系统开销.

据我所知,这是每个读者在.NET框架中工作的方式.