El tipo de código que está escribiendo es muy susceptible a la inyección de SQL. En lugar de procesar el lector como lo está haciendo, podría usar la propiedad RecordsAffected para encontrar el número de filas en el lector.
EDITAR:
Después de investigar un poco, la diferencia que está viendo es una diferencia de diseño entre la conexión de contexto y una conexión normal. Peter Debetta escribió en su blog sobre esto y escribe:
"La conexión de contexto está escrita de tal manera que solo obtiene una fila a la vez, por lo que para cada una de las 20 millones de filas impares, el código solicitaba cada fila individualmente. Sin embargo, al usar una conexión sin contexto, solicita un valor de 8K de filas a la vez".
http://sqlblog.com /blogs/peter_debetta/archive/2006/07/21/context-connection-is-slow.aspx