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); } }
internal StoredProcParameter Add(string name, ParameterDirection direction, TkDataType type) { TkDebug.AssertArgumentNullOrEmpty(name, "name", this); StoredProcParameter param = new StoredProcParameter(name, direction, type); return(param); }
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); }
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; } }
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); } }