TransactionalBatch Clase

Definición

Representa un lote de operaciones en los elementos con el mismo PartitionKey en un contenedor que se realizará de forma transaccional en el servicio Azure Cosmos DB. Use CreateTransactionalBatch(PartitionKey) para crear una instancia de TransactionalBatch.

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

Ejemplos

En este ejemplo se modifica de forma atómica un conjunto de documentos como un lote.

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;
}

En este ejemplo se lee de forma atómica un conjunto de documentos como un lote.

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());
        }
    }
}

Comentarios

Límites de solicitudes TransactionalBatch

Constructores

TransactionalBatch()

Representa un lote de operaciones en los elementos con el mismo PartitionKey en un contenedor que se realizará de forma transaccional en el servicio Azure Cosmos DB. Use CreateTransactionalBatch(PartitionKey) para crear una instancia de TransactionalBatch.

Métodos

CreateItem<T>(T, TransactionalBatchItemRequestOptions)

Agrega una operación para crear un elemento en el lote.

CreateItemStream(Stream, TransactionalBatchItemRequestOptions)

Agrega una operación para crear un elemento en el lote.

DeleteItem(String, TransactionalBatchItemRequestOptions)

Agrega una operación para eliminar un elemento en el lote.

ExecuteAsync(CancellationToken)

Ejecuta el lote transaccional en el servicio Azure Cosmos como una operación asincrónica.

ExecuteAsync(TransactionalBatchRequestOptions, CancellationToken)

Ejecuta el lote transaccional en el servicio Azure Cosmos como una operación asincrónica.

PatchItem(String, IReadOnlyList<PatchOperation>, TransactionalBatchPatchItemRequestOptions)

Agrega una operación para aplicar revisiones a un elemento en el lote.

ReadItem(String, TransactionalBatchItemRequestOptions)

Agrega una operación para leer un elemento en el lote.

ReplaceItem<T>(String, T, TransactionalBatchItemRequestOptions)

Agrega una operación para reemplazar un elemento en el lote.

ReplaceItemStream(String, Stream, TransactionalBatchItemRequestOptions)

Agrega una operación para reemplazar un elemento en el lote.

UpsertItem<T>(T, TransactionalBatchItemRequestOptions)

Agrega una operación para actualizar un elemento en el lote.

UpsertItemStream(Stream, TransactionalBatchItemRequestOptions)

Agrega una operación para actualizar un elemento en el lote.

Se aplica a