// protected methods
        /// <inheritdoc />
        protected override BsonDocument CreateCommand(ConnectionDescription connectionDescription, int attempt, long?transactionNumber)
        {
            var batchSerializer = CreateBatchSerializer(connectionDescription, attempt);
            var batchWrapper    = new BsonDocumentWrapper(_documents, batchSerializer);

            BsonDocument writeConcernWrapper = null;

            if (WriteConcernFunc != null)
            {
                var writeConcernSerializer = new DelayedEvaluationWriteConcernSerializer();
                writeConcernWrapper = new BsonDocumentWrapper(WriteConcernFunc, writeConcernSerializer);
            }

            return(new BsonDocument
            {
                { "insert", _collectionNamespace.CollectionName },
                { "ordered", _isOrdered },
                { "bypassDocumentValidation", () => _bypassDocumentValidation, _bypassDocumentValidation.HasValue },
                { "txnNumber", () => transactionNumber.Value, transactionNumber.HasValue },
                { "documents", new BsonArray {
                      batchWrapper
                  } },
                { "writeConcern", writeConcernWrapper, writeConcernWrapper != null }
            });
        }
示例#2
0
        // protected methods
        /// <inheritdoc />
        protected override BsonDocument CreateCommand(ConnectionDescription connectionDescription, int attempt, long?transactionNumber)
        {
            if (!Feature.Collation.IsSupported(connectionDescription.ServerVersion))
            {
                if (_deletes.Items.Skip(_deletes.Offset).Take(_deletes.Count).Any(d => d.Collation != null))
                {
                    throw new NotSupportedException($"Server version {connectionDescription.ServerVersion} does not support collations.");
                }
            }

            var batchSerializer = CreateBatchSerializer(connectionDescription, attempt);
            var batchWrapper    = new BsonDocumentWrapper(_deletes, batchSerializer);

            BsonDocument writeConcernWrapper = null;

            if (WriteConcernFunc != null)
            {
                var writeConcernSerializer = new DelayedEvaluationWriteConcernSerializer();
                writeConcernWrapper = new BsonDocumentWrapper(WriteConcernFunc, writeConcernSerializer);
            }

            return(new BsonDocument
            {
                { "delete", _collectionNamespace.CollectionName },
                { "ordered", _isOrdered },
                { "txnNumber", () => transactionNumber.Value, transactionNumber.HasValue },
                { "deletes", new BsonArray {
                      batchWrapper
                  } },
                { "writeConcern", writeConcernWrapper, writeConcernWrapper != null }
            });
        }