次の方法で共有


TransactionalBatch クラス

定義

Azure Cosmos DB サービスでトランザクション方式で実行されるコンテナー内の同じ PartitionKey 項目に対する操作のバッチを表します。 TransactionalBatch のインスタンスを作成するには、 を使用 CreateTransactionalBatch(PartitionKey) します。

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

注釈

TransactionalBatch 要求の制限

コンストラクター

TransactionalBatch()

Azure Cosmos DB サービスでトランザクション方式で実行されるコンテナー内の同じ PartitionKey 項目に対する操作のバッチを表します。 TransactionalBatch のインスタンスを作成するには、 を使用 CreateTransactionalBatch(PartitionKey) します。

メソッド

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)

アイテムをバッチにアップサートする操作を追加します。

適用対象