首页 > 解决方案 > 在将通过 IDataReader 获取的数据返回给其他代码之前对其进行预处理

问题描述

在让其他代码处理这些数据之前,我需要对通过 .NET IDataReader(从数据库返回)获取的数据进行按摩。是否有任何推荐的模式/现有代码可用?

我在想,我应该实现我自己的 IDataReader,封装“源 IDataReader”,当用户在我的阅读器上调用 Read 时,在返回之前按摩检索到的数据。

标签: c#.net

解决方案


我可能会做这样的事情。与通用阅读器相反,其他代码可以获得强类型对象。此外,由于数据读取器是可流式传输的,因此您还可以通过重新调整 IEnumerable 将对象流式传输出去。这将允许您在数据仍在读取时对其进行处理(如果适当或必要,甚至可以并行化操作)。

GetYourObjectFromDrFunction() 显然会执行您需要的按摩并生成 YourObject 的实例。

public IEnumerable<YourObject> GetEm()
{
    // assume we have your IDataReader named dr

    while (dr.Read())
    {
        yield return GetYourObjectFromDrFunction(dr);
    }
}

推荐阅读