/// <inheritdoc/> protected override SqlProvider VisitSeek(SeekProvider provider) { var compiledSource = Compile(provider.Source); SqlSelect source = compiledSource.Request.Statement; var query = source.ShallowClone(); var parameterBindings = new List <QueryParameterBinding>(); var typeIdColumnName = Handlers.NameBuilder.TypeIdColumnName; Func <KeyValuePair <int, Direction>, bool> filterNonTypeId = pair => ((MappedColumn)provider.Header.Columns[pair.Key]).ColumnInfoRef.ColumnName != typeIdColumnName; var keyColumns = provider.Header.Order .Where(filterNonTypeId) .ToList(); for (int i = 0; i < keyColumns.Count; i++) { int columnIndex = keyColumns[i].Key; var sqlColumn = query.Columns[columnIndex]; var column = provider.Header.Columns[columnIndex]; TypeMapping typeMapping = Driver.GetTypeMapping(column.Type); var binding = new QueryParameterBinding(typeMapping, GetSeekKeyElementAccessor(provider.Key, i)); parameterBindings.Add(binding); query.Where &= sqlColumn == binding.ParameterReference; } return(CreateProvider(query, parameterBindings, provider, compiledSource)); }
protected override Provider VisitSeek(SeekProvider provider) { mappings[provider] = Enumerable.Range(0, provider.Header.Length).ToList(); return(provider); }
/// <summary> /// Compiles <see cref="SeekProvider"/>. /// </summary> /// <param name="provider">Seek provider.</param> protected abstract TResult VisitSeek(SeekProvider provider);
protected override Provider VisitSeek(SeekProvider provider) { mappings[provider] = CollectionUtils.RangeToList(0, provider.Header.Length); return(provider); }