public virtual void FillCommand(DbCommand command, DataParameter[] parameterList) { command.CommandText = GetCommandText(parameterList, true); string sql = GetCommandText(parameterList, true); // 从Sql创建参数 var paramNames = DataPublic.FindParameters(sql); foreach (var paramName in paramNames) { DbParameter dbParam; // 如果参数列表中已经存在,则不再重复 if (command.Parameters.Contains(paramName)) { dbParam = command.Parameters[paramName]; } else { dbParam = command.CreateParameter(); dbParam.ParameterName = paramName; command.Parameters.Add(dbParam); } // 设置参数值 if (parameterList.IsNotNullOrEmpty()) { var paramValue = parameterList.Where(p => p.Name == paramName).FirstOrDefault(); if (paramValue != null) { dbParam.Value = paramValue.Value; } } } }
public virtual DataParameter[] GetDefinedParameters() { List <DataParameter> parameters = new List <Data.DataParameter>(); string sql = GetCommandText(null, false); // 从Sql创建参数 var paramNames = DataPublic.FindParameters(sql); foreach (var paramName in paramNames) { // 如果参数列表中已经存在,则不再重复 if (parameters.Any(p => p.Name == paramName)) { continue; } DataParameter predefinedParam = null; if (Parameters.IsNotNull()) { predefinedParam = Parameters.Where(p => p.Name == paramName).FirstOrDefault(); } if (predefinedParam != null) { parameters.Add(predefinedParam); } else { var newParam = new DataParameter(paramName, DbType.String); parameters.Add(newParam); } } return(parameters.ToArray()); }