Tak się składa, że jest to nieoczekiwane zachowanie w ExecuteReader()
- najprawdopodobniej błąd. Głęboko w ExecuteReader()
pojawia się jakiś przypadkowy błąd, najprawdopodobniej przekroczenie limitu czasu sieci, połączenie zostaje zamknięte, a następnie zamknięty SqlDataReader
jest zwracany tak, jakby nic się nie stało. Nic dziwnego, że kolejne wywołanie HasRows
daje wyjątek.