public static class EntityConvert
{
public static IList ToList(DbDataReader rdr, Type entity)
{
ArrayList list = new ArrayList();
using (rdr)
{
while (rdr.Read())
{
object obj = ToObject(rdr, entity, false);
if (obj != null)
list.Add(obj);
}
}
return list;
}
public static object ToObject(DbDataReader rdr,
Type entity, bool bNeedRead)
{
object obj = null;
if (!bNeedRead || rdr.Read())
{
// 创建Data Entity对象
obj = Activator.CreateInstance(entity);
// 设置Data Entity对象之字段数据
FieldInfo[] fields = entity.GetFields(
BindingFlags.Instance | BindingFlags.Public);
foreach (FieldInfo field in fields)
{
string fieldName = field.Name;
object fieldValue = rdr[fieldName];
if (fieldValue == System.DBNull.Value)
field.SetValue(obj, null);
else
field.SetValue(obj, fieldValue);
}
if (bNeedRead && !rdr.Read())
rdr.Close();
}
return obj;
}
} |