你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Container.UpsertItemAsync<T> 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在 Azure Cosmos 服务中将项作为异步操作更新插入。
public abstract System.Threading.Tasks.Task<Microsoft.Azure.Cosmos.ItemResponse<T>> UpsertItemAsync<T> (T item, Microsoft.Azure.Cosmos.PartitionKey? partitionKey = default, Microsoft.Azure.Cosmos.ItemRequestOptions requestOptions = default, System.Threading.CancellationToken cancellationToken = default);
abstract member UpsertItemAsync : 'T * Nullable<Microsoft.Azure.Cosmos.PartitionKey> * Microsoft.Azure.Cosmos.ItemRequestOptions * System.Threading.CancellationToken -> System.Threading.Tasks.Task<Microsoft.Azure.Cosmos.ItemResponse<'T>>
Public MustOverride Function UpsertItemAsync(Of T) (item As T, Optional partitionKey As Nullable(Of PartitionKey) = Nothing, Optional requestOptions As ItemRequestOptions = Nothing, Optional cancellationToken As CancellationToken = Nothing) As Task(Of ItemResponse(Of T))
类型参数
- T
参数
- item
- T
必须包含 id 属性的 JSON 可序列化对象。 CosmosSerializer 实现自定义序列化程序
- partitionKey
- Nullable<PartitionKey>
PartitionKey 项的 。 如果未指定,将通过从 {T} 提取来填充
- requestOptions
- ItemRequestOptions
(可选) 项请求的选项。
- cancellationToken
- CancellationToken
(表示请求取消的可选) CancellationToken 。
返回
Task<ItemResponse<T>>
ItemResponse<T>在 表示异步操作的服务响应的 对象中包含的Task已更新插入的 。
例外
表示异步处理期间发生的故障的合并。 在 InnerExceptions 中查找实际异常 ()
此异常可以封装许多不同类型的错误。 若要确定特定错误,请始终查看 StatusCode 属性。 创建文档时可能会获取的一些常见代码包括:
StatusCode | 异常原因 |
---|---|
400 | BadRequest - 这意味着提供的文档出现问题。 |
403 | 禁止 - 这可能意味着你尝试将文档更新插入到的集合已满。 |
413 | RequestEntityTooLarge - 这意味着该项超出了当前的最大实体大小。 有关限制和配额,请参阅文档。 |
429 | TooManyRequests - 这意味着已超出每秒请求单位数。 请参阅 DocumentClientException.RetryAfter 值,了解在重试此操作之前应等待多长时间。 |
示例
public class ToDoActivity{
public string id {get; set;}
public string status {get; set;}
}
ToDoActivity test = new ToDoActivity()
{
id = Guid.NewGuid().ToString(),
status = "InProgress"
};
ItemResponse<ToDoActivity> item = await this.container.UpsertItemAsync<ToDoActivity>(test, new PartitionKey(test.status));