• 利用反射将数据读入实体类


    反射DataReader赋值实体

     public static void ReaderToObject<T>(IDataReader reader, T targetObj)
            {
                
    for (int i = 0; i < reader.FieldCount; i++)
                {
                    System.Reflection.PropertyInfo propertyInfo 
    = targetObj.GetType().GetProperty(reader.GetName(i));
                    
    if (propertyInfo != null)
                    {
                        
    if (reader.GetValue(i) != DBNull.Value)
                        {
                            propertyInfo.SetValue(targetObj, reader.GetValue(i).ToString(), 
    null);
                        }
                    }
                }
            }

            
    public static void ReaderToObjects<T>(IDataReader reader, System.Collections.Generic.List<T> targetObjs)
            {
                
    while (reader.Read())
                {
                    T targetObj 
    = System.Activator.CreateInstance<T>();
                    ReaderToObject(reader, targetObj);
                    targetObjs.Add(targetObj);
                }
            } 

    调用:

            /// <summary>
            
    /// 得到数据表fav_bookmark所有记录
            
    /// </summary>
            
    /// <returns>数据集</returns>
            public BookMarkEntityCollection GetPagedBookMark(UserEntity userEntity, int startIndex, int endindex)
            {
                BookMarkEntityCollection list 
    = new BookMarkEntityCollection();

                 SqlParameter[] _param 
    ={            
                 
    new SqlParameter("@startIndex", startIndex),
                
    new SqlParameter("@endIndex", endindex)
                                        };
                
    using (SqlDataReader dr = SqlHelper.ExecuteReader(SysConfig.ConnectionString,CommandType.StoredProcedure, "pfav_GetPagedbookmark",_param))
                {
                    BookMarkEntity obj 
    = new BookMarkEntity();
                    MPortal.Utility.ReflectionEntity.ReaderToObjects
    <BookMarkEntity>(dr, list);               
                }
                
    return list;
            }
  • 相关阅读:
    JavaScript Array filter() 方法
    Object.assign方法的使用入门
    使用ES6新特性async await进行异步处理
    win10系统怎么设置软件开机启动
    【ES6学习笔记之】Object.assign()高级编程
    如何使用闭包形成计数器
    多次调用settimeout 如何使用单例模式
    在线表单设计器现在已经开源
    VisualStudio2017集成GitHub
    PHP使用curl替代file_get_contents
  • 原文地址:https://www.cnblogs.com/mmmhhhlll/p/1291300.html
Copyright © 2020-2023  润新知