HTH Харви Сатер

использовал DataReaders в течение многих лет (я предпочитаю использовать ORM), но я вынужден на работе. Я оттягиваю ряды и проверяюHasRows правда; отладка и проверка читателя показывает, что мои данные там.

Теперь вот проблема: момент, когда я звонюreader.Read()попытка расширить результаты говорит: «Перечисление не дало никаких результатов» или что-то еще, и я получаю «Недопустимая попытка чтения, когда данных нет». ошибка. Я получаю то же самое, если я не звонюRead() (это значение по умолчанию, поскольку DataReader запускается до первой записи).

Я не могу вспомнить правильный способ справиться с этим; данныеявляется там, когда я проверяюHasRows, но ушел в тот момент, когда я либо пытаюсь прочитать с него сразу после или после звонкаReadчто не имеет смысла, как будто я не звонюRead, читатель все еще должен быть до первой записи, и если установлено свойство, которое запускает его с первой записи (SingleRow? Я забыл его имя), то я должен иметь возможность читать строки без вызова Read, однако оба пути, кажется, двигаютсямимо строка, содержащая данные.

Что я забыл? Код довольно прост:

TemplateFile file = null;
using (DbDataReader reader = ExecuteDataReaderProc("GetTemplateByID", idParam)) 
{ 
    if (reader.HasRows) // reader has data at this point - verified with debugger
    { 
        reader.Read(); // loses data at this point if I call Read()
        template = new TemplateFile 
        {
            FileName = Convert.ToString(reader["FileName"]) // whether or not I call
                                                            // Read, says no data here
        };
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос