Example #1
0
        public List <T> ParseBatchResult <T>(JsonTextReader jsonTextReader, out BaseResult baseResult)
        {
            var readerState = new ReaderState();

            baseResult = new BaseResult();
            var result = new List <T>();

            jsonTextReader.Read();

            while (readerState.ReadNextProperty(jsonTextReader))
            {
                readerState.ReadNextPropertyValue(jsonTextReader);
                baseResult.SetFromJsonTextReader(readerState.PropertyName, readerState.Token, readerState.Value);
            }

            if (jsonTextReader.TokenType == JsonToken.EndObject)
            {
                // no need to check for base result
                //new BaseResultAnalyzer(db).ThrowIfNeeded(baseResult);
                return(result);
            }

            while (readerState.ReadNextArrayValue(jsonTextReader))
            {
                JObject jObject  = null;
                var     document = ParseSingleResult <T>(jsonTextReader, out jObject);
                db.ChangeTracker.TrackChanges(document, jObject);
                result.Add(document);
            }

            while (readerState.ReadNextProperty(jsonTextReader))
            {
                readerState.ReadNextPropertyValue(jsonTextReader);
                baseResult.SetFromJsonTextReader(readerState.PropertyName, readerState.Token, readerState.Value);
            }

            return(result);
        }