public InternalFieldConfigItem(DataColumn column, string[] sortedKeyFields)
 {
     FieldName = DisplayName = column.ColumnName;
     NickName  = StringUtil.GetNickName(FieldName);
     DataType  = MetaDataUtil.ConvertTypeToDataType(column.DataType);
     IsAutoInc = column.AutoIncrement;
     if (sortedKeyFields.Length == 1)
     {
         IsKey = string.Compare(FieldName, sortedKeyFields[0], true, ObjectUtil.SysCulture) == 0;
     }
     else
     {
         IsKey = Array.BinarySearch(sortedKeyFields, FieldName, COMPARER) >= 0;
     }
 }
示例#2
0
        protected sealed override void PrepareParameters()
        {
            PropertyInfo[] properties = GetType().GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            var            parameters = from memberInfo in properties
                                        from attribute in memberInfo.GetCustomAttributes(false)
                                        where attribute is ParameterAttribute
                                        select new { Property = memberInfo, Attribute = (ParameterAttribute)attribute };

            foreach (var item in parameters)
            {
                ParameterAttribute attribute = item.Attribute;
                string             name;
                if (string.IsNullOrEmpty(attribute.Name))
                {
                    name = item.Property.Name;
                    switch (attribute.LetterCase)
                    {
                    case CaseCategory.Uppercase:
                        name = name.ToUpper(ObjectUtil.SysCulture);
                        break;

                    case CaseCategory.Lowercase:
                        name = name.ToLower(ObjectUtil.SysCulture);
                        break;
                    }
                }
                else
                {
                    name = attribute.Name;
                }
                TkDataType dataType = attribute.UseDefaultType ?
                                      MetaDataUtil.ConvertTypeToDataType(item.Property.PropertyType) :
                                      attribute.DataType;
                StoredProcParameter param = Add(name, attribute.Direction, dataType);
                if (attribute.Size > 0)
                {
                    param.Size = attribute.Size;
                }
                else
                {
                    if (dataType == TkDataType.String)
                    {
                        param.Size = 255;
                    }
                }
                ParameterInfo info = new ParameterInfo {
                    Attribute = attribute, Parameter = param, Property = item.Property
                };
                if (DbUtil.IsInputParameter(attribute.Direction))
                {
                    fInputProperties.Add(info);
                }
                if (DbUtil.IsOutputParameter(attribute.Direction))
                {
                    fOutputProperties.Add(info);
                }

                IDbDataParameter parameter = CreateDataParameter(param);
                info.SetInputValue(this);
                Command.Parameters.Add(parameter);
            }
        }