コード例 #1
0
ファイル: DMSDbProvider.cs プロジェクト: githuer/DMSFrame
        /// <summary>
        ///
        /// </summary>
        /// <param name="allowParam"></param>
        /// <param name="_ParamList"></param>
        /// <param name="value"></param>
        /// <param name="memberInfo"></param>
        /// <param name="paramIndex"></param>
        /// <returns></returns>
        public virtual ParamInfo BuildParamInfo(bool allowParam, List <ParamInfo> _ParamList, object value, System.Reflection.MemberInfo memberInfo, ref int paramIndex)
        {
            //防止重复的列名命名
            string name = BuildParamName(allowParam, false, memberInfo, paramIndex);

            Type      entityType = memberInfo == null ? null : memberInfo.ReflectedType;
            ParamInfo p          = new ParamInfo()
            {
                MemberName = string.Empty,
                Name       = name,
                Value      = value,
            };

            while (true && _ParamList != null)
            {
                var existsParam = _ParamList.Where(q => q.Name == p.Name).FirstOrDefault();
                if (existsParam != null)
                {
                    paramIndex++;
                    name = BuildParamName(allowParam, true, memberInfo, paramIndex);
                    p    = new ParamInfo()
                    {
                        MemberName = string.Empty,
                        Name       = name,
                        Value      = value,
                    };
                    continue;
                }
                break;
            }

            Type propertyType = typeof(string);

            if (memberInfo != null)
            {
                propertyType         = ((System.Reflection.PropertyInfo)memberInfo).PropertyType;
                p.MemberName         = memberInfo.Name;
                p.ParameterDirection = memberInfo.GetParameterType();
            }
            else if (value != null)
            {
                propertyType = value.GetType();
            }
            int?size = memberInfo.GetSize();

            if ((size.HasValue && size > 0) || (size == -1))
            {
                p.Size = size;
            }
            if (propertyType == typeof(string))
            {
                p.DbType = System.Data.DbType.AnsiString;
            }
            return(p);
        }