示例#1
0
        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()]));
 }