Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

TransactionalBatch Class

Definition

Namespace:
Microsoft.Azure.Cosmos
Assembly:
Microsoft.Azure.Cosmos.Client.dll
Package:
Microsoft.Azure.Cosmos v3.58.0
Package:
Microsoft.Azure.Cosmos v3.59.0-preview.0
Source:
TransactionalBatch.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Represents a batch of operations against items with the same PartitionKey in a container that will be performed in a transactional manner at the Azure Cosmos DB service. Use CreateTransactionalBatch(PartitionKey) to create an instance of TransactionalBatch.

public abstract class TransactionalBatch
type TransactionalBatch = class
Public MustInherit Class TransactionalBatch
Inheritance
TransactionalBatch

Examples

This example atomically modifies a set of documents as a batch.

public class ToDoActivity
{
 public string type { get; set; }
 public string id { get; set; }
 public string status { get; set; }
}

string activityType = "personal";
ToDoActivity test1 = new ToDoActivity()
{
 type = activityType,
 id = "learning",
 status = "ToBeDone"
};

ToDoActivity test2 = new ToDoActivity()
{
 type = activityType,
 id = "shopping",
 status = "Done"
};

ToDoActivity test3 = new ToDoActivity()
{
 type = activityType,
 id = "swimming",
 status = "ToBeDone"
};

ToDoActivity test4 = new ToDoActivity()
{
 type = activityType,
 id = "running",
 status = "ToBeDone"
};

List<PatchOperation> patchOperations = new List<PatchOperation>();
patchOperations.Add(PatchOperation.Replace("/status", "InProgress");
patchOperations.Add(PatchOperation.Add("/progress", 50);

using (TransactionalBatchResponse batchResponse = await container.CreateTransactionalBatch(new Cosmos.PartitionKey(activityType))
 .CreateItem<ToDoActivity>(test1)
 .ReplaceItem<ToDoActivity>(test2.id, test2)
 .UpsertItem<ToDoActivity>(test3)
 .PatchItem(test4.id, patchOperations)
 .DeleteItem("reading")
 .CreateItemStream(streamPayload1)
 .ReplaceItemStream("eating", streamPayload2)
 .UpsertItemStream(streamPayload3)
 .ExecuteAsync())
{
 if (!batchResponse.IsSuccessStatusCode)
 {
 // Handle and log exception
 return;
 }

 // Look up interested results - eg. via typed access on operation results
 TransactionalBatchOperationResult<ToDoActivity> replaceResult = batchResponse.GetOperationResultAtIndex<ToDoActivity>(0);
 ToDoActivity readActivity = replaceResult.Resource;
}

This example atomically reads a set of documents as a batch.

string activityType = "personal";
using (TransactionalBatchResponse batchResponse = await container.CreateTransactionalBatch(new Cosmos.PartitionKey(activityType))
 .ReadItem("playing")
 .ReadItem("walking")
 .ReadItem("jogging")
 .ReadItem("running")
 .ExecuteAsync())
{
 // Look up interested results - eg. via direct access to operation result stream
 List<string> resultItems = new List<string>();
 foreach (TransactionalBatchOperationResult operationResult in batchResponse)
 {
 using (StreamReader streamReader = new StreamReader(operationResult.ResourceStream))
 {
 resultItems.Add(await streamReader.ReadToEndAsync());
 }
 }
}

Remarks

Limits on TransactionalBatch requests

Constructors

Name Description
TransactionalBatch()

Methods

Name Description
CreateItem<T>(T, TransactionalBatchItemRequestOptions)

Adds an operation to create an item into the batch.

CreateItemStream(Stream, TransactionalBatchItemRequestOptions)

Adds an operation to create an item into the batch.

DeleteItem(String, TransactionalBatchItemRequestOptions)

Adds an operation to delete an item into the batch.

ExecuteAsync(CancellationToken)

Executes the transactional batch at the Azure Cosmos service as an asynchronous operation.

ExecuteAsync(TransactionalBatchRequestOptions, CancellationToken)

Executes the transactional batch at the Azure Cosmos service as an asynchronous operation.

PatchItem(String, IReadOnlyList<PatchOperation>, TransactionalBatchPatchItemRequestOptions)

Adds an operation to patch an item into the batch.

ReadItem(String, TransactionalBatchItemRequestOptions)

Adds an operation to read an item into the batch.

ReplaceItem<T>(String, T, TransactionalBatchItemRequestOptions)

Adds an operation to replace an item into the batch.

ReplaceItemStream(String, Stream, TransactionalBatchItemRequestOptions)

Adds an operation to replace an item into the batch.

UpsertItem<T>(T, TransactionalBatchItemRequestOptions)

Adds an operation to upsert an item into the batch.

UpsertItemStream(Stream, TransactionalBatchItemRequestOptions)

Adds an operation to upsert an item into the batch.

Applies to


Feedback

Was this page helpful?