TransactionalBatch Classe

Definição

Representa um lote de operações em relação a itens com o mesmo PartitionKey em um contêiner que será executado de maneira transacional no serviço do Azure Cosmos DB. Use CreateTransactionalBatch(PartitionKey) para criar uma instância de TransactionalBatch.

public abstract class TransactionalBatch
type TransactionalBatch = class
Public MustInherit Class TransactionalBatch
Herança
TransactionalBatch

Exemplos

Este exemplo modifica atomicamente um conjunto de documentos como um 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;
}

Este exemplo lê atomicamente um conjunto de documentos como um 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());
        }
    }
}

Comentários

Limites em solicitações TransactionalBatch

Construtores

TransactionalBatch()

Representa um lote de operações em relação a itens com o mesmo PartitionKey em um contêiner que será executado de maneira transacional no serviço do Azure Cosmos DB. Use CreateTransactionalBatch(PartitionKey) para criar uma instância de TransactionalBatch.

Métodos

CreateItem<T>(T, TransactionalBatchItemRequestOptions)

Adiciona uma operação para criar um item no lote.

CreateItemStream(Stream, TransactionalBatchItemRequestOptions)

Adiciona uma operação para criar um item no lote.

DeleteItem(String, TransactionalBatchItemRequestOptions)

Adiciona uma operação para excluir um item no lote.

ExecuteAsync(CancellationToken)

Executa o lote transacional no serviço do Azure Cosmos como uma operação assíncrona.

ExecuteAsync(TransactionalBatchRequestOptions, CancellationToken)

Executa o lote transacional no serviço do Azure Cosmos como uma operação assíncrona.

PatchItem(String, IReadOnlyList<PatchOperation>, TransactionalBatchPatchItemRequestOptions)

Adiciona uma operação para aplicar patch a um item no lote.

ReadItem(String, TransactionalBatchItemRequestOptions)

Adiciona uma operação para ler um item no lote.

ReplaceItem<T>(String, T, TransactionalBatchItemRequestOptions)

Adiciona uma operação para substituir um item no lote.

ReplaceItemStream(String, Stream, TransactionalBatchItemRequestOptions)

Adiciona uma operação para substituir um item no lote.

UpsertItem<T>(T, TransactionalBatchItemRequestOptions)

Adiciona uma operação para fazer upsert de um item no lote.

UpsertItemStream(Stream, TransactionalBatchItemRequestOptions)

Adiciona uma operação para fazer upsert de um item no lote.

Aplica-se a