DataReader tem linhas e dados, tentando ler a partir dele diz "não há dados presentes"

Não uso DataReaders há anos (prefiro usar um ORM), mas sou forçado a trabalhar. Afasto as linhas e verifico seHasRows é verdade; a depuração neste momento e o exame do leitor mostram que meus dados estão lá.

Agora, aqui está a questão: no momento em que ligoreader.Read(), tentando expandir os resultados, diz "A enumeração não produziu resultados" ou o que for, e recebo a "Tentativa inválida de ler quando nenhum dado está presente". erro. Recebo o mesmo se não ligar paraRead() (que é o padrão desde que o DataReader inicia antes do primeiro registro

Não consigo me lembrar da maneira correta de lidar com isso; os dados quando eu verificoHasRows, mas desapareceu no momento em que tento ler o livro logo depois ou depois de ligar paraRead, o que não faz sentido como se eu não chamasseRead, o leitor ainda deve estar antes do primeiro registro e, se a propriedade estiver configurada para iniciá-lo no primeiro registro (SingleRow? Esqueci o nome dele) estiver configurada, será possível ler as linhas sem chamar Read, no entanto, os dois lados parecem se moverpassad a linha que contém os dado

O que estou esquecendo? O código é bastante direto:

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
        };
    }
}

questionAnswers(2)

yourAnswerToTheQuestion