反射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);
}
}
{
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;
}
/// 得到数据表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;
}