private IEnumerable<IParameterSpecification> CreateParameterSpecificationsAndAssignBackTrack(IEnumerable<Parameter> sqlPatameters) { var specifications = new List<IParameterSpecification>(); int position = 0; var parameters = sqlPatameters.ToArray(); for (var sqlParameterPos = 0; sqlParameterPos < parameters.Length;) { var specification = new PositionalParameterSpecification(1, 0, position++) {ExpectedType = UniqueKeyType}; var paramTrackers = specification.GetIdsForBackTrack(Factory); foreach (var paramTracker in paramTrackers) { parameters[sqlParameterPos++].BackTrack = paramTracker; } specifications.Add(specification); } return specifications; }
protected virtual IEnumerable<IParameterSpecification> CreateParameterSpecificationsAndAssignBackTrack(IEnumerable<Parameter> sqlPatameters) { // This implementation can manage even the case of batch-loading var specifications = new List<IParameterSpecification>(); int position = 0; var parameters = sqlPatameters.ToArray(); for (var sqlParameterPos = 0; sqlParameterPos < parameters.Length; ) { var specification = new PositionalParameterSpecification(1, 0, position++) { ExpectedType = KeyType }; var paramTrackers = specification.GetIdsForBackTrack(Factory); foreach (var paramTracker in paramTrackers) { parameters[sqlParameterPos++].BackTrack = paramTracker; } specifications.Add(specification); } return specifications; }
public SqlString GetPositionalParameter() { var parameterSpecification = new PositionalParameterSpecification(1, 0, GetPositionalParameterPosition()); var parameter = Parameter.Placeholder; parameter.BackTrack = parameterSpecification.GetIdsForBackTrack(Factory).First(); collectedParameters.Add(parameterSpecification); return new SqlString(parameter); }
public void OrdinalParameter(int position) { var paramSpec = new PositionalParameterSpecification(1, position, positionalParameterCount++); var parameter = Parameter.Placeholder; parameter.BackTrack = paramSpec.GetIdsForBackTrack(factory).First(); parametersSpecifications.Add(paramSpec); result.Add(parameter); }