Ejemplo n.º 1
0
        public virtual Query <TEntity> Parse(HttpRequest request, ActionDescriptor action, bool isCollectionCall)
        {
            var query = new Query <TEntity>
                        (
                _fieldsParser.Parse <TEntity>(request, isCollectionCall),
                _orderByParser.Parse <TEntity>(request),
                _pagingParser.Parse(request),
                _filterParser.Parse(request, action, _webFilterConverter),
                GetVerb(request)
                        )
            {
                TypeFilter = _typeFilterParser.Parse(request)
            };

            if (query.Fields.Contains((ISelection c) => c.Count))
            {
                query.Options.NeedsCount       = true;
                query.Options.NeedsEnumeration = query.Fields.Children.Count != 1;
            }

            if (query.Verb == HttpVerbs.Get)
            {
                query.Options.NeedsDataTracking = false;
            }

            return(query);
        }