Когда вы оставляете блок using в вашем методе, команда закрывается и удаляется, если вы можете использовать ридер из вызывающей стороны, значит, он все еще работает.
Команды предназначены для выполнения операторов в соединении, но не содержат никаких данных, поэтому это работает. Пока соединение открыто, вы можете использовать свой ридер.
PS. есть также хорошая перегрузка ExecuteReader, которая инструктирует Reader закрывать соединение непосредственно для вас при утилизации, полезно, когда соединение создается локально, как вы делаете с помощью команды и не передается извне.