你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

TransactionalBatch 类

定义

表示对容器中具有相同 PartitionKey 项的一批操作,这些项将在 Azure Cosmos DB 服务中以事务方式执行。 使用 CreateTransactionalBatch(PartitionKey) 创建事务性Batch 的实例。

public abstract class TransactionalBatch
type TransactionalBatch = class
Public MustInherit Class TransactionalBatch
继承
TransactionalBatch

示例

此示例以原子方式将一组文档修改为批处理。

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

此示例以原子方式将一组文档作为批读取。

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

注解

事务性Batch 请求的限制

构造函数

TransactionalBatch()

表示对容器中具有相同 PartitionKey 项的一批操作,这些项将在 Azure Cosmos DB 服务中以事务方式执行。 使用 CreateTransactionalBatch(PartitionKey) 创建事务性Batch 的实例。

方法

CreateItem<T>(T, TransactionalBatchItemRequestOptions)

将创建项的操作添加到批处理中。

CreateItemStream(Stream, TransactionalBatchItemRequestOptions)

将创建项的操作添加到批处理中。

DeleteItem(String, TransactionalBatchItemRequestOptions)

将删除项的操作添加到批处理中。

ExecuteAsync(CancellationToken)

将 Azure Cosmos 服务中的事务批处理作为异步操作执行。

ExecuteAsync(TransactionalBatchRequestOptions, CancellationToken)

将 Azure Cosmos 服务中的事务批处理作为异步操作执行。

PatchItem(String, IReadOnlyList<PatchOperation>, TransactionalBatchPatchItemRequestOptions)

将项目修补的操作添加到批处理中。

ReadItem(String, TransactionalBatchItemRequestOptions)

添加操作以将项读取到批处理中。

ReplaceItem<T>(String, T, TransactionalBatchItemRequestOptions)

添加操作以将项替换到批处理中。

ReplaceItemStream(String, Stream, TransactionalBatchItemRequestOptions)

添加操作以将项替换到批处理中。

UpsertItem<T>(T, TransactionalBatchItemRequestOptions)

添加一个操作,以将项更新插入批处理。

UpsertItemStream(Stream, TransactionalBatchItemRequestOptions)

添加一个操作,以将项更新插入批处理。

适用于