public T[] Complete <T>() { for (var i = 0; i < includeResults.Length; i++) { var include = includeResults[i]; sessionOperations.TrackIncludedDocument(include); } var transformedResults = TransformResults().ToList(); var finalResults = transformedResults.Select(ApplyTrackingIfNeeded <T>) .ToArray(); for (var i = 0; i < finalResults.Length; i++) { if (ReferenceEquals(finalResults[i], null)) { sessionOperations.RegisterMissing(ids[i]); } } var includePaths = includes != null?includes.Select(x => x.Key).ToArray() : null; sessionOperations.RegisterMissingIncludes(results.Where(x => x != null).Select(x => x.DataAsJson), includePaths); return(finalResults); }
private void CompleteInternal <T>(QueryResult queryResult, Action <int, T> addToResult) { queryResult.Results.BlittableValidation(); if (NoTracking == false) { _session.RegisterIncludes(queryResult.Includes); } for (int i = 0; i < queryResult.Results.Length; i++) { var document = (BlittableJsonReaderObject)queryResult.Results[i]; var metadata = document.GetMetadata(); metadata.TryGetId(out var id); addToResult(i, Deserialize <T>(id, document, metadata, _fieldsToFetch, NoTracking, _session)); } if (NoTracking == false) { _session.RegisterMissingIncludes(queryResult.Results, queryResult.Includes, queryResult.IncludedPaths); if (queryResult.CounterIncludes != null) { _session.RegisterCounters( queryResult.CounterIncludes, queryResult.IncludedCounterNames); } } }
public IList <T> Complete <T>() { var queryResult = currentQueryResults.CreateSnapshot(); foreach (var include in SerializationHelper.RavenJObjectsToJsonDocuments(queryResult.Includes)) { sessionOperations.TrackIncludedDocument(include); } var list = queryResult.Results .Select(x => x != null ? Deserialize <T>(x) : default(T)) .ToList(); if (disableEntitiesTracking == false) { sessionOperations.RegisterMissingIncludes(queryResult.Results.Where(x => x != null), includes); } if (transformResults == null) { return(list); } return(transformResults(indexQuery, list.Cast <object>()).Cast <T>().ToList()); }
public T[] Complete <T>() { for (var i = 0; i < includeResults.Length; i++) { var include = includeResults[i]; var entityType = includes.Length > i ? includes[i].Value : typeof(object); sessionOperations.TrackEntity(entityType, include); } var finalResults = SelectResults() .Select(document => document == null ? default(T) : sessionOperations.TrackEntity <T>(document)) .ToArray(); for (var i = 0; i < finalResults.Length; i++) { if (ReferenceEquals(finalResults[i], null)) { sessionOperations.RegisterMissing(ids[i]); } } var includePaths = includes != null?includes.Select(x => x.Key).ToArray() : null; sessionOperations.RegisterMissingIncludes(results.Where(x => x != null).Select(x => x.DataAsJson), includePaths); return(finalResults); }
public IList <T> Complete <T>() { var queryResult = currentQueryResults.CreateSnapshot(); foreach (var include in queryResult.Includes) { var metadata = include.Value <RavenJObject>("@metadata"); sessionOperations.TrackEntity <object>(metadata.Value <string>("@id"), include, metadata, disableEntitiesTracking); } var list = queryResult.Results .Select(Deserialize <T>) .ToList(); sessionOperations.RegisterMissingIncludes(queryResult.Results, includes); if (transformResults == null) { return(list); } return(transformResults(indexQuery, list.Cast <object>()).Cast <T>().ToList()); }
public List <T> Complete <T>() { var queryResult = _currentQueryResults.CreateSnapshot(); if (DisableEntitiesTracking == false) { _session.RegisterIncludes(queryResult.Includes); } var list = new List <T>(); foreach (BlittableJsonReaderObject document in queryResult.Results) { var metadata = document.GetMetadata(); metadata.TryGetId(out var id); list.Add(Deserialize <T>(id, document, metadata, _projectionFields, DisableEntitiesTracking, _session)); } if (DisableEntitiesTracking == false) { _session.RegisterMissingIncludes(queryResult.Results, queryResult.Includes, queryResult.IncludedPaths); } return(list); }
public List <T> Complete <T>() { _session.AssertNotDisposed(); // ensure that the user didn't do an async query then closed the session early var queryResult = _currentQueryResults.CreateSnapshot(); queryResult.Results.BlittableValidation(); if (DisableEntitiesTracking == false) { _session.RegisterIncludes(queryResult.Includes); } var list = new List <T>(); foreach (BlittableJsonReaderObject document in queryResult.Results) { var metadata = document.GetMetadata(); metadata.TryGetId(out var id); list.Add(Deserialize <T>(id, document, metadata, _fieldsToFetch, DisableEntitiesTracking, _session)); } if (DisableEntitiesTracking == false) { _session.RegisterMissingIncludes(queryResult.Results, queryResult.Includes, queryResult.IncludedPaths); } return(list); }
public T[] Complete <T>() { for (var i = 0; i < includeResults.Length; i++) { var include = includeResults[i]; sessionOperations.TrackIncludedDocument(include); } var finalResults = ids != null? ReturnResultsById <T>() : ReturnResults <T>(); for (var i = 0; i < finalResults.Length; i++) { var finalResult = finalResults[i]; if (ReferenceEquals(finalResult, null)) { sessionOperations.RegisterMissing(ids[i]); } } var includePaths = includes != null?includes.Select(x => x.Key).ToArray() : null; sessionOperations.RegisterMissingIncludes(results.Where(x => x != null).Select(x => x.DataAsJson), includePaths); return(finalResults); }
public IList <T> Complete <T>() { var queryResult = _currentQueryResults.CreateSnapshot(); foreach (BlittableJsonReaderObject include in queryResult.Includes) { var newDocumentInfo = DocumentInfo.GetNewDocumentInfo(include); _session.includedDocumentsByKey[newDocumentInfo.Id] = newDocumentInfo; } var usedTransformer = string.IsNullOrEmpty(_indexQuery.Transformer) == false; var list = new List <T>(); foreach (BlittableJsonReaderObject document in queryResult.Results) { if (usedTransformer) { BlittableJsonReaderArray values; if (document.TryGet("$values", out values) == false) { throw new InvalidOperationException("Transformed document must have a $values property"); } list.AddRange(TransformerHelpers.ParseValuesFromBlittableArray <T>(_session, values)); continue; } BlittableJsonReaderObject metadata; string id; if (document.TryGet(Constants.Metadata.Key, out metadata) == false) { throw new InvalidOperationException("Document must have a metadata"); } if (metadata.TryGet(Constants.Metadata.Id, out id) == false) { throw new InvalidOperationException("Document must have an id"); } list.Add(_session.TrackEntity <T>(id, document, metadata, _disableEntitiesTracking)); } if (_disableEntitiesTracking == false) { _session.RegisterMissingIncludes(queryResult.Results, _includes); } if (_transformResults == null) { return(list); } return(_transformResults(_indexQuery, list.Cast <object>()).Cast <T>().ToList()); }
private void CompleteInternal <T>(QueryResult queryResult, Action <int, T> addToResult) { queryResult.Results.BlittableValidation(); if (NoTracking == false) { _session.RegisterIncludes(queryResult.Includes); } for (int i = 0; i < queryResult.Results.Length; i++) { var document = (BlittableJsonReaderObject)queryResult.Results[i]; BlittableJsonReaderObject metadata; try { metadata = document.GetMetadata(); } catch (InvalidOperationException) { if (document.Count != _facetResultProperties.Length) { throw; } foreach (var prop in _facetResultProperties) { if (document.TryGetMember(prop.Name, out _) == false) { throw; } } throw new InvalidOperationException("Raw query with aggregation by facet should be called by " + $"{nameof(IRawDocumentQuery<T>.ExecuteAggregation)} or {nameof(IAsyncRawDocumentQuery<T>.ExecuteAggregationAsync)} method."); } metadata.TryGetId(out var id); addToResult(i, Deserialize <T>(id, document, metadata, _fieldsToFetch, NoTracking, _session, _isProjectInto)); } if (NoTracking == false) { _session.RegisterMissingIncludes(queryResult.Results, queryResult.Includes, queryResult.IncludedPaths); if (queryResult.CounterIncludes != null) { _session.RegisterCounters( queryResult.CounterIncludes, queryResult.IncludedCounterNames); } } }
public void SetResult(GetDocumentResult result) { if (result.Includes != null) { foreach (BlittableJsonReaderObject include in result.Includes) { var newDocumentInfo = DocumentInfo.GetNewDocumentInfo(include); _session.includedDocumentsByKey[newDocumentInfo.Id] = newDocumentInfo; } } if (_includes != null && _includes.Length > 0) { _session.RegisterMissingIncludes(result.Results, _includes); } }
public IList <T> Complete <T>() { var queryResult = currentQueryResults.CreateSnapshot(); foreach (var include in SerializationHelper.RavenJObjectsToJsonDocuments(queryResult.Includes)) { sessionOperations.TrackIncludedDocument(include); } var usedTransformer = string.IsNullOrEmpty(indexQuery.Transformer) == false; var list = new List <T>(); foreach (var result in queryResult.Results) { if (result == null) { list.Add(default(T)); continue; } if (usedTransformer) { var values = result.Value <RavenJArray>("$values"); foreach (RavenJObject value in values) { list.Add(Deserialize <T>(value)); } continue; } list.Add(Deserialize <T>(result)); } if (disableEntitiesTracking == false) { sessionOperations.RegisterMissingIncludes(queryResult.Results.Where(x => x != null), indexQuery.Includes); } if (transformResults == null) { return(list); } return(transformResults(indexQuery, list.Cast <object>()).Cast <T>().ToList()); }
public List <T> Complete <T>() { _session.RegisterIncludes(_result.Includes); var list = new List <T>(); foreach (BlittableJsonReaderObject document in _result.Results) { var metadata = document.GetMetadata(); metadata.TryGetId(out var id); list.Add(QueryOperation.Deserialize <T>(id, document, metadata, projectionFields: null, disableEntitiesTracking: false, session: _session)); } _session.RegisterMissingIncludes(_result.Results, _result.Includes, _query.Includes); return(list); }
public void SetResult(GetDocumentResult result) { if (result == null) { return; } _session.RegisterIncludes(result.Includes); foreach (BlittableJsonReaderObject document in result.Results) { if (document == null) { continue; } var newDocumentInfo = DocumentInfo.GetNewDocumentInfo(document); _session.DocumentsById.Add(newDocumentInfo); } _session.RegisterMissingIncludes(result.Results, result.Includes, _includes); }
public T[] Complete <T>() { foreach (var include in includeResults) { sessionOperations.TrackEntity <object>(include); } var finalResults = SelectResults() .Select(document => document == null ? default(T) : sessionOperations.TrackEntity <T>(document)) .ToArray(); for (var i = 0; i < finalResults.Length; i++) { if (ReferenceEquals(finalResults[i], null)) { sessionOperations.RegisterMissing(ids[i]); } } sessionOperations.RegisterMissingIncludes(results.Where(x => x != null).Select(x => x.DataAsJson), includes); return(finalResults); }