我有一个大型机数据库,我使用ODBC从中导出500 000条记录。现在我必须将数据表填充到数据模型(对象)中。 数据模型或类具有150多个属性,需要从数据表填充。我在每个数据流的每次迭代中都使用反射。我可以使用列表或阅读器属性从数据表填充,但我必须定义150个成员。为了避免并使其更通用,我选择使用反射。
DataModel model = null;
//DataModel is a class containing various properties
//i.e public class DataModel
//{
// public string Name {get;set;}
// public string Role {get;set;}
//etc....150 properties
//}
dt = new DataTable();
using(OdbcDataReader reader = cmd.ExecuteReader())
{
DatatTable dtSchema = reader.GetSchemaTable();
List<DataColumn> listCols = new List<DataColumn>();
if(dtSchema != null)
{
foreach(DataRow drow in dtSchema.Rows)
{
string ColName = Convert.ToString(drow["ColumnName"]);
DataColumn column = new DataColumn(columnName,(Type)(drow["DataType"]));
listCols.Add(column);
dt.Columns.Add(column);
}
PropertyInfo[] properties = typeof(DataModel).GetProperties();
while(reader.Read())
{
DataRow dataRow = dt.NewRow();
for(int i = 0; i < listCols.COunt; i++)
{
dataRow[((DataCOlumn)listCols[i])]
}
dt.Rows.Add(dataRow);
model = new DataModel();
foreach(PropertyInfo property in properties)
{
if(dt.Columns.Contains(property.Name))
SetValue(model,property.name,dataRow[property,name]);
}
if(model != null) lst.Add(model);
}
}
我通过使用这种反射方法得到例外。可以纠正上述问题并采用任何不同的方法吗?我在每个数据流的每次迭代中都使用反射。请告诉我除了反思之外还有其他任何好的或更高性能的方法。 (请注意,我有超过150个需要填充的属性)