Quando chiamo questo codice:Come funziona il recupero dei dati da SQL Server a 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
}
}
}
cosa succede internamente? Come funziona a livello di rete? Effettuerà un nuovo round trip nel database per ogni chiamata a Read
o è stata eseguita la lettura di batch internamente?
sto chiedendo perché ho appena letto che ODP.NET fornisce FetchSize
proprietà sia in OracleCommand
e OracleDataReader
che capisco come definizione di quanti record devono essere precaricati da sola andata e ritorno per il database. Mi chiedo se SQL Server funzioni in modo simile e se esiste un comportamento simile che può essere configurato da qualche parte. Non ho trovato alcuna configurazione di questo tipo in SqlCommand
, SqlDataReader
o CommandBehavior
.
Ho fatto [** questo test **] (http://i.imgur.com/K6IogT2.png), ma se ho impostato il pacchetto al valore più piccolo (negativo?) - mi mostrerebbe 1,7, 7,7,7, invece di 1,2,3,4,5,6? –