通过数据表初始化对象

时间:2009-09-17 20:06:35

标签: c# oracle datatable

有没有办法从返回数据表的数据库查询初始化对象?我的意思是,我有一个oracle存储过程,它返回表中数据的refcursor。在我的代码中,我有一个该表的对象(不使用ORM)。有没有一种简单的方法从数据表中的数据初始化对象,或者我是否必须手动初始化对象并设置所有属性?

1 个答案:

答案 0 :(得分:0)

您可以在扩展方法中使用反射:

public static T CreateFrom<T>(this DataTable dt) where T : new()
{
    T obj = new T();
    obj.InitFrom(dt);
    return obj;
}

public static void InitFrom<T>(this T obj, DataTable dt)
{
    object currentValue;
    DataRow row = dt[0];

    foreach(var prop in typeof(T).GetProperties())
    {
        currentValue = row[prop.Name];
        prop.SetValue(obj, currentValue, null);
    }
}