【问题标题】:Mapping data from a IDbReader to their equivalent runtime types将数据从 IDbReader 映射到其等效的运行时类型
【发布时间】:2016-01-22 20:48:53
【问题描述】:

在给定列名的情况下,我一直在寻找一种方便的方法来读取 OraclaDataReader 中的列。目前,我使用类似:

int integer = (int)reader["Column1"];
int? nullableInt = reader.IsDBNull("Column2") ? null : (int?) reader["Column2"];

我的问题是:难道不能只创建一个通用的扩展方法来处理所有这些麻烦吗?类似 reader.ReadInteger("Column"),也可以用于可空类型?

【问题讨论】:

    标签: c# .net sql-server database oracle


    【解决方案1】:

    是的,扩展类应该这样做。 https://msdn.microsoft.com/en-us/library/bb311042.aspx 但是当你连续做 1000 次时,那并不是很快。

    internal static class OraclaDataReaderExtension
    {
        public static T Read<T>(this OraclaDataReader dbReader, string columnName)
        {
            return dbReader.IsDBNull(columnName) ? default(T) : (T)dbReader[columnName];
        }
    }
    

    【讨论】:

    • 谢谢!但这不是通用的
    • 现在,更通用了。只有值类型才能正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多