Den typ av kod du skriver är mycket känslig för SQL Injection. Istället för att bearbeta läsaren som du är, kan du bara använda RecordsAffected Property för att hitta antalet rader i läsaren.
EDIT:
Efter att ha gjort lite forskning är skillnaden du ser en designmässig skillnad mellan kontextkopplingen och en vanlig anslutning. Peter Debetta bloggade om detta och skriver:
"Kontextkopplingen är skriven så att den bara hämtar en rad åt gången, så för var och en av de 20 miljonerna udda raderna frågade koden om varje rad individuellt. Med en icke-kontextanslutning begär den dock 8K värt rader åt gången."
http://sqlblog.com /blogs/peter_debetta/archive/2006/07/21/context-connection-is-slow.aspx