Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
            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 结束
            }