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]; 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 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); }
public T[] Complete <T>(MultiLoadResult multiLoadResult) { foreach (var include in SerializationHelper.RavenJObjectsToJsonDocuments(multiLoadResult.Includes)) { documentSession.TrackIncludedDocument(include); } if (typeof(T).IsArray) { var arrayOfArrays = multiLoadResult.Results .Select(x => { if (x == null) { return(null); } var values = x.Value <RavenJArray>("$values").Cast <RavenJObject>(); var elementType = typeof(T).GetElementType(); var array = values.Select(value => { EnsureNotReadVetoed(value); return(documentSession.ProjectionToInstance(value, elementType)); }).ToArray(); var newArray = Array.CreateInstance(elementType, array.Length); Array.Copy(array, newArray, array.Length); return(newArray); }) .Cast <T>() .ToArray(); return(arrayOfArrays); } var items = ParseResults <T>(multiLoadResult.Results) .ToArray(); if (items.Length > ids.Length) { throw new InvalidOperationException(String.Format("A load was attempted with transformer {0}, and more than one item was returned per entity - please use {1}[] as the projection type instead of {1}", transformer, typeof(T).Name)); } return(items); }
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()); }