예제 #1
0
 private void HandleResponse(GetDocumentResult loadResult)
 {
     _loadOperation.SetResult(loadResult);
     if (RequiresRetry == false)
     {
         Result = _loadOperation.GetDocuments <T>();
     }
 }
예제 #2
0
 public void SetResult(GetDocumentResult result)
 {
     foreach (BlittableJsonReaderObject document in result.Results)
     {
         var newDocumentInfo = DocumentInfo.GetNewDocumentInfo(document);
         _session.DocumentsById.Add(newDocumentInfo);
         _returnedIds.Add(newDocumentInfo.Id);
     }
 }
예제 #3
0
        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);
        }
예제 #4
0
        public static T[] ParseResultsArray <T>(InMemoryDocumentSessionOperations session, GetDocumentResult transformedResult)
        {
            return(transformedResult.Results.Select(x =>
            {
                if (x == null)
                {
                    return null;
                }

                BlittableJsonReaderArray values;
                if (((BlittableJsonReaderObject)x).TryGet("$values", out values) == false)
                {
                    throw new InvalidOperationException("Transformed document must have a $values property");
                }

                var elementType = typeof(T).GetElementType();

                var array = values.Select(value => session.DeserializeFromTransformer(elementType, null, value as BlittableJsonReaderObject)).ToArray();
                var newArray = Array.CreateInstance(elementType, array.Length);
                Array.Copy(array, newArray, array.Length);
                return newArray;
            })
                   .Cast <T>()
                   .ToArray());
        }
예제 #5
0
        public static IEnumerable <T> ParseResults <T>(InMemoryDocumentSessionOperations session, GetDocumentResult transformedResult)
        {
            foreach (BlittableJsonReaderObject result in transformedResult.Results)
            {
                if (result == null)
                {
                    yield return(default(T));

                    continue;
                }

                BlittableJsonReaderArray values;
                if (result.TryGet("$values", out values) == false)
                {
                    throw new InvalidOperationException("Transformed document must have a $values property");
                }

                foreach (var value in ParseValuesFromBlittableArray <T>(session, values))
                {
                    yield return(value);
                }
            }
        }