У меня есть некоторый код C #, который динамически генерирует SQL-запрос и выполняет его через IDbCommand.ExecuteScalar (). Это прекрасно работает; есть ровно один результат, который соответствует моему запросу в БД, и этот результат всегда возвращается.
Но совсем недавно, в качестве первого шага в рефакторинге для поддержки нескольких совпадений в БД, я заменил вызов ExecuteScalar () на один вызов ExecuteReader (). Все остальное в настройке и доступе к БД одинаково. Но возвращенный IDataReader не содержит данных и выдает исключения InvalidOperationException, когда я пытаюсь извлечь из него данные.
Я знаю, что данные все еще там; все работает нормально, когда я снова переключаюсь на ExecuteScalar (). Как это возможно?