/// <summary> /// Get parameter descriptor. /// </summary> /// <param name="parameterName">Parameter name.</param> /// <returns>Data parameter descriptor.</returns> private DataParameterGroupUnit GetParameterGroupDescriptor(string parameterName) { DataParameterGroupUnit result = null; if (!string.IsNullOrWhiteSpace(parameterName)) { if (this.dataCommandConfig.ParameterGroupCollection != null && this.dataCommandConfig.ParameterGroupCollection.Any()) { result = this.dataCommandConfig.ParameterGroupCollection.FirstOrDefault(para => string.Equals(para.Name.Trim('@'), parameterName.Trim('@'), StringComparison.OrdinalIgnoreCase)); } } return(result); }
/// <summary> /// Add parameter group to command. /// </summary> /// <param name="parameterGroupName">Parameter group name.</param> /// <param name="parameterValues">Parameter group value.</param> public void AddGroupParameter(string parameterGroupName, IEnumerable parameterValues) { DataParameterGroupUnit currentParameterGroupDescriptor = this.GetParameterGroupDescriptor(parameterGroupName); if (currentParameterGroupDescriptor == null) { throw new ArgumentNullException(string.Format(@"Not find parameter group ""{0}"" from configure file", parameterGroupName)); } StringBuilder finalParameters = new StringBuilder(); int index = 1; foreach (object value in parameterValues) { this.AddInParameter(string.Concat(currentParameterGroupDescriptor.Name, index), currentParameterGroupDescriptor.DbType, currentParameterGroupDescriptor.Size, currentParameterGroupDescriptor.Precision, currentParameterGroupDescriptor.Scale, value); if (finalParameters.Length > 0) { finalParameters.Append(", "); } finalParameters.Append("@"); finalParameters.Append(parameterGroupName.Trim('@')); finalParameters.Append(index); index++; } string groupName = string.Concat(parameterGroupName); if (this._myGroupParameters.Value.ContainsKey(groupName)) { this._myGroupParameters.Value[groupName] = string.Format("({0})", finalParameters.ToString()); } else { this._myGroupParameters.Value.Add(groupName, string.Format("({0})", finalParameters.ToString())); } }