private string CreateParameterForValue(
DbCommand command,
string parameterName,
string sourceColumn,
DataRowVersion version,
int parameterCount,
object value,
DbSchemaRow row,
StatementType statementType,
bool whereClause
)
{
DbParameter p = GetNextParameter(command, parameterCount);
if (null == parameterName)
{
p.ParameterName = GetParameterName(1 + parameterCount);
}
else
{
p.ParameterName = parameterName;
}
p.Direction = ParameterDirection.Input;
p.SourceColumn = sourceColumn;
p.SourceVersion = version;
p.SourceColumnNullMapping = false;
p.Value = value;
p.Size = 0; // don't specify parameter.Size so that we don't silently truncate to the metadata size
ApplyParameterInfo(p, row.DataRow, statementType, whereClause);
if (!command.Parameters.Contains(p))
{
command.Parameters.Add(p);
}
if (null == parameterName)
{
return GetParameterPlaceholder(1 + parameterCount);
}
else
{
Debug.Assert(null != _parameterNames, "How can we have a parameterName without a _parameterNames collection?");
Debug.Assert(null != _parameterMarkerFormat, "How can we have a _parameterNames collection but no _parameterMarkerFormat?");
return string.Format(CultureInfo.InvariantCulture, _parameterMarkerFormat, parameterName);
}
}