当我把这个代码:如何将数据从SQL Server提取到SqlDataReader?
using (var connection = new SqlConnection(connectionString))
{
var command = new SqlCommand("SELECT * FROM Table", connection);
connection.Open();
using (var reader = command.ExecuteReader())
{
while(reader.Read())
{
// Do something here
}
}
}
什么内部发生?这是如何在网络层面上工作的?每次调用Read
时是否会进行一次新的数据库往返访问,还是在内部实现任何批处理读取?
我在问,因为我刚才看到ODP.NET在OracleCommand
和OracleDataReader
中提供了FetchSize
属性,我理解为应该通过单次往返数据库预加载多少记录的定义。我想知道SQL Server是否以类似的方式工作,以及是否存在可以在某处配置的类似行为。我在SqlCommand
,SqlDataReader
或CommandBehavior
中没有找到任何这样的配置。
我做了[** this test **](http://i.imgur.com/K6IogT2.png),但是如果我将packetsize设置为最小值(负值?) - 它会显示1,7, 7,7,7,而不是1,2,3,4,5,6? – 2014-11-29 20:45:15