Пример #1
0
        public void AddTopParameter(long value, ODataPath path)
        {
            if (_constantToParameterMapper == null)
            {
                return;
            }

            String resourcePath = GetSegmentResourcePathTop(path);

            foreach (KeyValuePair <ConstantNode, OeQueryCacheDbParameterDefinition> pair in _constantToParameterMapper)
            {
                if (pair.Value.ParameterType == typeof(int) && pair.Key.LiteralText == resourcePath)
                {
                    for (int i = 0; i < _parameterValues.Count; i++)
                    {
                        if (String.CompareOrdinal(_parameterValues[i].ParameterName, pair.Value.ParameterName) == 0)
                        {
                            if (value < (int)_parameterValues[i].ParameterValue)
                            {
                                _parameterValues[i] = new OeQueryCacheDbParameterValue(pair.Value.ParameterName, (int)value);
                            }
                            return;
                        }
                    }

                    _parameterValues.Add(new OeQueryCacheDbParameterValue(pair.Value.ParameterName, (int)value));
                    return;
                }
            }

            throw new InvalidOperationException("top not found");
        }
Пример #2
0
        protected override IReadOnlyList <Expression> TranslateParameters(
            IReadOnlyList <ConstantExpression> constantExpressions,
            IReadOnlyDictionary <ConstantExpression, ConstantNode> constantsMappings)
        {
            var parameters = new ParameterExpression[constantExpressions.Count];

            _parameterValues = new OeQueryCacheDbParameterValue[constantExpressions.Count];
            for (int i = 0; i < constantExpressions.Count; i++)
            {
                ConstantExpression constantExpression = constantExpressions[i];
                String             parameterName      = "__p_" + i.ToString(CultureInfo.InvariantCulture);

                ConstantNode constantNode = constantsMappings[constantExpression];
                _constantToParameterMapper.Add(constantNode, new OeQueryCacheDbParameterDefinition(parameterName, constantExpression.Type));

                _parameterValues[i] = new OeQueryCacheDbParameterValue(parameterName, constantExpression.Value);
                parameters[i]       = Expression.Parameter(constantExpression.Type, parameterName);
            }
            return(parameters);
        }