zoukankan      html  css  js  c++  java
  • C#将SqlDataReader转换成泛型类

            public static T DataReaderToEntity<T>(IDataReader dr, T entity)
            {
                try
                {
                    PropertyInfo[] pilist = entity.GetType().GetProperties();
                    foreach (PropertyInfo pi in pilist)
                    {
                        for (int i = 0; i < dr.FieldCount; i++)
                        {
                            if (pi.Name.Equals(dr.GetName(i)))
                            {
                                pi.SetValue(entity, Convert.ChangeType(dr[i], pi.PropertyType), null);
                            }
                        }
                    }
                    return entity;
                }
                catch
                {
                    return default(T);
                }
            }

    上面的方法利用反射读取SqlDataReader对应值。红色部分转换为相应的类型

    有时候会有一些特殊情况,比如Guid和string之间的转换可能会报错,object must implement IConvertible

    那么需要加入前置判断

                                if (!dr[i].GetType().IsPrimitive)
                                {string me = dr[i].ToString();
                                        pi.SetValue(entity, me, null);                                
                                }

    因为直接使用Convert.ChangeType会报错

    记录编程的点滴,体会学习的乐趣
  • 相关阅读:
    日志配置
    Mybaties核心配置文件
    配置3
    写了两个数据获得方式----费劲周折
    applicationContext
    配置2
    Django-缓存的配置
    RabbitMQ的工作模式
    centos下保留python2安装python3
    python位运算
  • 原文地址:https://www.cnblogs.com/AduBlog/p/15076289.html
Copyright © 2011-2022 走看看