Den type kode, du skriver, er meget modtagelig for SQL Injection. I stedet for at behandle læseren, som du er, kan du bare bruge RecordsAffected Property til at finde antallet af rækker i læseren.
EDIT:
Efter at have lavet nogle undersøgelser, er forskellen, du ser, en designmæssig forskel mellem kontekstforbindelsen og en almindelig forbindelse. Peter Debetta bloggede om dette og skriver:
"Kontekstforbindelsen er skrevet sådan, at den kun henter en række ad gangen, så for hver af de 20 millioner nogle ulige rækker bad koden om hver række individuelt. Ved at bruge en ikke-kontekstforbindelse anmoder den dog om 8K værd rækker ad gangen."
http://sqlblog.com /blogs/peter_debetta/archive/2006/07/21/context-connection-is-slow.aspx