你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
TransactionalBatch 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示对容器中具有相同 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());
}
}
}
注解
构造函数
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) |
添加一个操作,以将项更新插入批处理。 |