O tipo de código que você está escrevendo é altamente suscetível à injeção de SQL. Em vez de processar o leitor como você é, basta usar a propriedade RecordsAffected para encontrar o número de linhas no leitor.
EDITAR:
Depois de fazer algumas pesquisas, a diferença que você está vendo é uma diferença de design entre a conexão de contexto e uma conexão regular. Peter Debetta blogou sobre isso e escreve:
"A conexão de contexto é escrita de tal forma que busca apenas uma linha de cada vez, então, para cada uma das 20 milhões de linhas ímpares, o código estava solicitando cada linha individualmente. Usando uma conexão sem contexto, no entanto, ele solicita 8K de linhas de cada vez."
http://sqlblog.com /blogs/peter_debetta/archive/2006/07/21/context-connection-is-slow.aspx