有人知道DbDataReader实际是如何工作的吗?我们可以以SqlDataReader为例。
当你执行以下操作时:
cmd.CommandText = "SELECT * FROM Customers";
var rdr = cmd.ExecuteReader();
while(rdr.Read())
{
//Do something
}
数据读取器是否将所有行存储在内存中,还是只获取一行,然后当调用Read时,它会去数据库中获取下一行?似乎仅将一行带入内存会导致性能不佳,但将所有行带入内存会使ExecuteReader调用需要一段时间。
我知道我是对象的使用者,实现方式并不重要,但我只是好奇,我认为我可能需要花几个小时在反编译工具中研究它在做什么,所以想问问可能知道的人。
我只是好奇,有没有人有想法。