zoukankan      html  css  js  c++  java
  • DataReader转实体<T>


            #region DataReader转实体<T>

            /// <summary>
            /// DataReader转实体
            /// </summary>
            /// <typeparam name="T">实体类型</typeparam>
            /// <param name="dr">DataReader</param>
            /// <returns>实体对象</returns>
            public static T DataReaderToEntity<T>(IDataReader dr) where T : new()
            {
                T t = new T();
                if (dr == null) return default(T);
                using (dr)
                {
                    if (dr.Read())
                    {
                        // 获得实体的公共属性
                        PropertyInfo[] propertys = t.GetType().GetProperties();
                        List<string> listFieldName = new List<string>(dr.FieldCount);
                        for (int i = 0; i < dr.FieldCount; i++)
                        {
                            listFieldName.Add(dr.GetName(i).ToLower());
                        }

                        foreach (PropertyInfo p in propertys)
                        {
                            string columnName = p.Name;
                            if (listFieldName.Contains(columnName.ToLower()))
                            {
                                // 判断此属性是否有Setter或columnName值是否为空
                                object value = dr[columnName];
                                if (!p.CanWrite || value is DBNull || value == DBNull.Value) continue;
                                try
                                {
                                    #region SetValue
                                    switch (p.PropertyType.ToString())
                                    {
                                        case "System.String":
                                            p.SetValue(t, Convert.ToString(value), null);
                                            break;
                                        case "System.Int32":
                                            p.SetValue(t, Convert.ToInt32(value), null);
                                            break;
                                        case "System.Int64":
                                            p.SetValue(t, Convert.ToInt64(value), null);
                                            break;
                                        case "System.DateTime":
                                            p.SetValue(t, Convert.ToDateTime(value), null);
                                            break;
                                        case "System.Boolean":
                                            p.SetValue(t, Convert.ToBoolean(value), null);
                                            break;
                                        case "System.Double":
                                            p.SetValue(t, Convert.ToDouble(value), null);
                                            break;
                                        case "System.Decimal":
                                            p.SetValue(t, Convert.ToDecimal(value), null);
                                            break;
                                        default:
                                            p.SetValue(t, value, null);
                                            break;
                                    }
                                    #endregion
                                }
                                catch
                                {
                                    //throw (new Exception(ex.Message));
                                }
                            }
                        }
                    }
                }
                return t;
            }
            #endregion

  • 相关阅读:
    Windows Store App 主题动画
    Windows Store App 过渡动画
    Windows Store App 控件动画
    Windows Store App 近期访问列表
    Windows Store App 文件选取器
    Windows Store App 访问应用内部文件
    Windows Store App 用户库文件分组
    Windows Store App 获取文件及文件夹列表
    Windows Store App 用户库文件夹操作
    Windows Store App 用户库文件操作
  • 原文地址:https://www.cnblogs.com/single/p/2745806.html
Copyright © 2011-2022 走看看