Non ho mai usato la proprietà HasRows poichè è sufficiente chiamare il metodo Read per leggere un record alla volta; se Read restituisce false, allora significa che il DataReader non contiene record.

Ciao!