private T LoadObject <T>(IDataReader dataReader) where T : SRO, new() { T obj = CreateObject <T>(); Type type = typeof(T); IMyPropertyInfo[] myPropertys = PropertyInfoProxy.GetProperties(type); foreach (IMyPropertyInfo property in myPropertys) { if (property.IsLoad == false && property.IsSave == false) {//判断是否加载 continue; } object value = dataReader[property.Name]; if (value == DBNull.Value) { continue; } if (property.IsLoad) { property.SetValue(obj, value); } if (property.PropertyType.IsEnum) { obj.SetOriginalValue(property.Name, Enum.Parse(property.PropertyType, value.ToString())); } else { obj.SetOriginalValue(property.Name, value); } } IMyPropertyInfo isNew = PropertyInfoProxy.GetProperty(type, "IsNew"); isNew.SetValue(obj, false); AddCache(obj); return(obj); }
private static SRO LoadObject(Type type, IDataReader dataReader) { SRO obj = CreateObject(type) as SRO; if (obj == null) { return(null); } IMyPropertyInfo[] myPropertys = PropertyInfoProxy.GetProperties(type); foreach (IMyPropertyInfo property in myPropertys) { if (property.IsLoad == false) {//判断是否加载 continue; } object value = dataReader[property.Name]; if (value == DBNull.Value) { continue; } property.SetValue(obj, value); obj.SetOriginalValue(property.Name, property.GetValue(obj)); } IMyPropertyInfo isNew = PropertyInfoProxy.GetProperty(type, "IsNew"); isNew.SetValue(obj, false); AddCache(obj); return(obj); }
private static IMyDbParameter ParameterBuilder(IMyPropertyInfo property, object pValue) { #region 构造 IMyDbParameter 开始 Type pType = property.PropertyType; if (pType == INTTYPE) { return(DbParameterProxy.Create(property.Name, SqlDbType.Int, pValue)); } else if (pType == BOOLTYPE) { return(DbParameterProxy.Create(property.Name, SqlDbType.Bit, pValue)); } else if (pType == STRINGTYPE) { if (property.StringDataType.Type == StringType.NVarchar) { if (property.StringDataType.IsMaxLength) { return(DbParameterProxy.Create(property.Name, SqlDbType.NVarChar, pValue)); } else { string val = pValue as string; if (!string.IsNullOrEmpty(val) && val.Length > property.StringDataType.Length) { LogProxy.Error(string.Format(LENGTHGAUGE, property.Name, val), true); } return(DbParameterProxy.Create(property.Name, SqlDbType.NVarChar, property.StringDataType.Length, pValue)); } } else { return(DbParameterProxy.Create(property.Name, SqlDbType.NText, pValue)); } } else if (pType == DATETIMETYPE) { if ((DateTime)pValue == DateTime.MinValue) { return(DbParameterProxy.Create(property.Name, SqlDbType.DateTime, DBNull.Value)); } else { return(DbParameterProxy.Create(property.Name, SqlDbType.DateTime, pValue)); } } else if (pType == DECIMALTYPE) { return(DbParameterProxy.Create(property.Name, SqlDbType.Decimal, pValue)); } else if (pType.IsEnum) { return(DbParameterProxy.Create(property.Name, SqlDbType.Int, (int)pValue)); } else if (pType == LONGTYPE) { return(DbParameterProxy.Create(property.Name, SqlDbType.BigInt, pValue)); } else if (pType == BYTESTYPE) { return(DbParameterProxy.Create(property.Name, SqlDbType.Image, pValue)); } else { LogProxy.ErrorFormat(true, DATATYPEERROR, pType.ToString()); return(null); } #endregion 构造 IMyDbParameter 结束 }