【发布时间】:2016-07-02 04:31:51
【问题描述】:
在我试图理解的软件中,DataReader 类是通过 ExecuteReader() 从 IDbCommand 类型(继承)接收的。
我对 C# 和数据库通信还很陌生,所以:DataReader 如何处理与数据库的通信?
- 在执行时是否接收到来自查询的全部响应 ExecuteReader(),然后在本地用 reader.Read() 单步执行响应?
- 或者每个 reader.Read() 调用是否通过网络从数据库中获取下一项?
- 或者,我没有想到的其他东西?
【问题讨论】:
-
考虑使用 Microsoft Reference Source 查看实现细节:DbDataReader class 和 SqlDataReader class。
-
虽然由 IDataReader 的实现者决定是否支持流式传输,但大多数都是为了提高性能。有时您甚至可以控制在需要下一次网络访问之前缓冲多少数据。
-
DataReader 的行为应该是一个 Firehose、只进的阅读器,以应用程序可以读取的速度返回行。
-
请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”!
标签: c# datareader dbconnection