2009-09-17 3 views
0

Есть ли способ инициализировать объект из запроса базы данных, который возвращает datatable? Я имею в виду, что у меня есть хранимая процедура oracle, которая возвращает refcursor для данных из таблицы. В моем коде у меня есть объект для этой таблицы (не используя ORM). Есть ли простой способ инициализировать объект из данных в datatable, или мне нужно пойти и инициализировать объект и установить все свойства вручную?Инициализация объекта через таблицу данных

+0

Вы можете посмотреть на http://stackoverflow.com/questions/545328/datatable-to-generic-list-memory-leak/545429 # 545429 и http://stackoverflow.com/questions/564366/generic-list-to-datatable/564373#564373 –

ответ

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); 
    } 
} 
Смежные вопросы