using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Reflection;
using Ant.Frame;
namespace Ant.ORM
{
public class DataToEntity
{
#region 将DataTable转换成List列表
///
/// 返回一条实体数据
///
/// 实体
/// 表数据
///
public static object DataTableToEntity(DataTable dataTable)
{
Dictionary vl = new Dictionary();
T obj = Activator.CreateInstance();
if (dataTable.Rows.Count > 0)
{
DataRow row = dataTable.Rows[0];
foreach (PropertyInfo pinfo in obj.GetType().GetProperties())
{
DataFieldColumnAttribute dfa = Attribute.GetCustomAttribute(pinfo, typeof(DataFieldColumnAttribute)) as DataFieldColumnAttribute;
if (!object.Equals(dfa, null))
{
if (!Convert.IsDBNull(row[pinfo.Name]))
{
try
{
vl = SetChanaged(pinfo.Name, row[pinfo.Name], vl);
pinfo.SetValue(obj, row[pinfo.Name], null);
}
catch (Exception ex)
{
pinfo.SetValue(obj, null, null);
}
}
}
if (pinfo.Name == "PersistType")
{
pinfo.SetValue(obj, EntityPersistType.Update, null);
}
if (pinfo.Name == "Values")
{
pinfo.SetValue(obj, vl, null);
}
}
}
return obj;
}
///
/// 返回一条实体数据
///
/// 实体
/// 表数据
///
private static object DataTableToEntity(DataSet ds)
{
Dictionary vl = new Dictionary();
T obj = Activator.CreateInstance();
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
{
DataRow row = ds.Tables[0].Rows[0];
foreach (PropertyInfo pinfo in obj.GetType().GetProperties())
{
DataFieldColumnAttribute dfa = Attribute.GetCustomAttribute(pinfo, typeof(DataFieldColumnAttribute)) as DataFieldColumnAttribute;
if (!object.Equals(dfa, null))
{
if (!Convert.IsDBNull(row[pinfo.Name]))
{
try
{
vl = SetChanaged(pinfo.Name, row[pinfo.Name], vl);
pinfo.SetValue(obj, row[pinfo.Name], null);
}
catch (Exception ex)
{
pinfo.SetValue(obj, null, null);
}
}
}
if (pinfo.Name == "PersistType")
{
pinfo.SetValue(obj, EntityPersistType.Update, null);
}
if (pinfo.Name == "Values")
{
pinfo.SetValue(obj, vl, null);
}
}
}
}
return obj;
}
///
/// 返回实体集合
///
/// 实体
/// 表数据
///
private static object DataTableToList(DataTable dataTable)
{
List list = new List(); Dictionary vl = new Dictionary();
try
{
foreach (DataRow row in dataTable.Rows)
{
T obj = Activator.CreateInstance();
foreach (PropertyInfo pinfo in obj.GetType().GetProperties())
{
DataFieldColumnAttribute dfa = Attribute.GetCustomAttribute(pinfo, typeof(DataFieldColumnAttribute)) as DataFieldColumnAttribute;
if (!object.Equals(dfa, null))
{
try
{
if (!Convert.IsDBNull(row[pinfo.Name]))
{
vl = SetChanaged(pinfo.Name, row[pinfo.Name], vl);
pinfo.SetValue(obj, row[pinfo.Name], null);
}
else
pinfo.SetValue(obj, null, null);
}
catch (Exception ex)
{
pinfo.SetValue(obj, null, null);
}
}
if (pinfo.Name == "PersistType")
{
pinfo.SetValue(obj, EntityPersistType.Update, null);
}
if (pinfo.Name == "Values")
{
pinfo.SetValue(obj, vl, null);
}
}
list.Add(obj);
}
}
catch (Exception ex)
{
}
return list;
}
///
/// 将表数据转换成实体
///
/// 表数据
/// 实体
///
private static object DataTableToList(DataTable dt, object enty)
{
List