コード例 #1
0
        private BulkWriteOperationResult ExecuteBatches(RetryableWriteContext context, CancellationToken cancellationToken)
        {
            var helper = new BatchHelper(_requests, _writeConcern, _isOrdered);

            foreach (var batch in helper.GetBatches())
            {
                batch.Result = ExecuteBatch(context, batch, cancellationToken);
            }
            return(helper.CreateFinalResultOrThrow(context.Channel));
        }
コード例 #2
0
        private async Task <BulkWriteOperationResult> ExecuteBatchesAsync(RetryableWriteContext context, CancellationToken cancellationToken)
        {
            var helper = new BatchHelper(_requests, _writeConcern, _isOrdered);

            foreach (var batch in helper.GetBatches())
            {
                batch.Result = await ExecuteBatchAsync(context, batch, cancellationToken).ConfigureAwait(false);
            }
            return(helper.CreateFinalResultOrThrow(context.Channel));
        }
        private async Task <BulkWriteOperationResult> ExecuteBatchesAsync(IChannelHandle channel, CancellationToken cancellationToken)
        {
            var decoratedRequests = DecorateRequests(_requests);
            var helper            = new BatchHelper(decoratedRequests, _writeConcern, _isOrdered);

            foreach (var batch in helper.Batches)
            {
                batch.Result = await ExecuteBatchAsync(channel, batch.RequestSource, batch.OriginalIndex, cancellationToken).ConfigureAwait(false);
            }
            return(helper.CreateFinalResultOrThrow(channel));
        }
コード例 #4
0
        private BulkWriteOperationResult ExecuteBatches(IChannelHandle channel, ICoreSessionHandle session, CancellationToken cancellationToken)
        {
            var decoratedRequests = DecorateRequests(_requests);
            var helper            = new BatchHelper(decoratedRequests, _writeConcern, _isOrdered);

            foreach (var batch in helper.Batches)
            {
                batch.Result = ExecuteBatch(channel, session, batch.RequestSource, batch.OriginalIndex, cancellationToken);
            }
            return(helper.CreateFinalResultOrThrow(channel));
        }
コード例 #5
0
        private async Task <IEnumerable <WriteConcernResult> > InsertBatchesAsync(IChannelHandle channel, CancellationToken cancellationToken)
        {
            var helper = new BatchHelper(_documentSource, _writeConcern, _continueOnError);

            foreach (var batch in helper.GetBatches())
            {
                try
                {
                    batch.Result = await ExecuteProtocolAsync(channel, batch, cancellationToken).ConfigureAwait(false);
                }
                catch (MongoWriteConcernException ex)
                {
                    batch.Result = helper.HandleException(ex);
                    if (!_continueOnError)
                    {
                        return(null);
                    }
                }
            }

            return(helper.CreateFinalResultOrThrow());
        }