Implementando uma classe DataReader para uma extensão de processamento de dados

O objeto Datareader permite que um cliente recupere um fluxo de dados somente leitura, somente encaminhamento de uma fonte de dados. Os resultados são retornados à medida que a consulta é executada e são armazenadas no buffer de rede no cliente até que você os solicite usando o método Read da classe DataReader. Para criar uma classe DataReader, implemente IDataReader e, opcionalmente, implemente IDataReaderExtension. O uso de um objeto DataReader aumenta o desempenho do aplicativo ao recuperar dados assim que eles estiverem disponíveis, em vez de aguardar que todos os resultados da consulta sejam retornados, e (por padrão) ao armazenar somente uma linha por vez na memória, reduzindo a sobrecarga do sistema.

Depois de criar uma instância de sua classe Command, você criará um objeto Datareader ao chamar Command.ExecuteReader para recuperar linhas da fonte de dados. A implementação de DataReader deve fornecer dois recursos básicos: acesso somente encaminhamento aos conjuntos de resultados obtidos pela execução de um comando e acesso aos tipos de coluna, nomes e valores de cada linha. Os clientes usam o método Read do objeto DataReader para obter uma linha a partir dos resultados da consulta.

No Designer de Relatórios, o seu objeto DataReader é usado para recuperar uma lista de campos, além de informações de esquema sobre o conjunto de resultados. Isso é realizado pela implementação dos métodos GetName, GetValue, GetFieldType e GetOrdinal da interface de IDataReader.

A interface de IDataReaderExtension permite que você ofereça informações específicas de agregação sobre o seu conjunto de resultados. Para obter um exemplo da implementação da classe DataReader, consulte SQL Server Reporting Services Product Samples (em inglês).