Como a busca de dados do SQL Server para o SqlDataReader funciona?
Quando chamo este código:
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
}
}
}
O que acontece internamente? Como isso funciona no nível da rede? Ele fará uma nova ida e volta ao banco de dados para cada chamada paraRead
ou existe algum lote lido implementado internamente?
Estou perguntando, porque acabei de ler que o ODP.NET forneceFetchSize
propriedade em ambosOracleCommand
eOracleDataReader
, que entendo como definição de quantos registros devem ser pré-carregados por ida e volta ao banco de dados. Gostaria de saber se o SQL Server funciona de maneira semelhante e se existe algum comportamento semelhante que pode ser configurado em algum lugar. Não encontrei essa configuração emSqlCommand
, SqlDataReader
ouCommandBehavior
.