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); }