Exemple #1
0
        public async Task <IList <string> > PatchAsync <T>(IRavenQueryable <T> query, IEnumerable <PatchRequest> patches, bool allowStale)
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            if (patches == null)
            {
                throw new ArgumentNullException(nameof(patches));
            }

            var operation = await _commands.UpdateByIndexAsync(GetIndexName(query), GetIndexQuery(query), patches.ToArray(), new BulkOperationOptions { AllowStale = allowStale });

            var token = await operation.WaitForCompletionAsync();

            var results = token.Value <RavenJArray>();

            var ids = from document in results.Values <RavenJObject>()
                      where document.ContainsKey("Document")
                      select document["Document"].Value <string>();

            return(ids.Distinct()
                   .ToList());
        }