protected override object Load(SqlDataReader dr) { object item = Activator.CreateInstance(klass); foreach (var p in klass.GetProperties()) { Type propertyType = p.PropertyType; object setParam; if (!propertyType.IsPrimitive && propertyType != typeof(string)) { string connStr = this.connStr; //should have checked dictionary ReflectDataMapper reflectDataMapper = new ReflectDataMapper(propertyType, connStr); setParam = reflectDataMapper.GetById(dr[reflectDataMapper.idField].ToString()); } else { setParam = dr[p.Name]; } if (setParam.GetType() == typeof(DBNull)) { if (propertyType.IsPrimitive) { setParam = 0; } else { setParam = null; } } p.SetValue(item, setParam); } return(item); }
public override object GetValue(SqlDataReader dr) { return(notPrimitiveValue.GetById(dr[GetFKName()])); }