예제 #1
0
        public void AddParameter(string name, ParameterDirection direction, TkDataType type,
                                 int size, object value)
        {
            if (fParamCreated)
            {
                TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                            "存储过程{0}已经执行过了,不能再添加参数了", ProcName), this);
                return;
            }

            StoredProcParameter param = Add(name, direction, type);

            if (size > 0)
            {
                param.Size = size;
            }
            if (value != null)
            {
                param.Value = value;
            }
            fParams.Add(param);
            if (DbUtil.IsInputParameter(direction))
            {
                fInputParams.Add(name, param);
            }
            if (direction != ParameterDirection.Input)
            {
                fOutputParams.Add(name, param);
            }
        }
예제 #2
0
        internal StoredProcParameter Add(string name, ParameterDirection direction, TkDataType type)
        {
            TkDebug.AssertArgumentNullOrEmpty(name, "name", this);

            StoredProcParameter param = new StoredProcParameter(name, direction, type);

            return(param);
        }
예제 #3
0
        internal IDbDataParameter CreateDataParameter(StoredProcParameter param)
        {
            IDbDataParameter result;

            if (fUseContext)
            {
                result = Context.CreateParameter(param.Type);
            }
            else
            {
                result        = Command.CreateParameter();
                result.DbType = DataSetUtil.ConvertTkDataTypeToDbType(param.Type);
            }
            param.FillDataParameter(result);

            return(result);
        }
예제 #4
0
        protected override void PrepareParameters()
        {
            base.PrepareParameters();
            if (ConfigItem.Params == null)
            {
                return;
            }

            int i = 0;
            List <StoredProcParameter> parameters = Parameters;

            foreach (ParamConfigItem param in ConfigItem.Params)
            {
                if (param.DefaultValue != null)
                {
                    StoredProcParameter parameter = parameters[i];
                    parameter.SetDefaultValue(Expression.Execute(param.DefaultValue, Context));
                }
                ++i;
            }
        }
예제 #5
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);
            }
        }