你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
IDocumentClient.UpsertDocumentAsync 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
UpsertDocumentAsync(String, Object, RequestOptions, Boolean, CancellationToken) |
在 Azure Cosmos DB 服务中将文档作为异步操作更新插入。 |
UpsertDocumentAsync(Uri, Object, RequestOptions, Boolean, CancellationToken) |
在 Azure Cosmos DB 服务中将文档更新为异步操作。 |
UpsertDocumentAsync(String, Object, RequestOptions, Boolean, CancellationToken)
在 Azure Cosmos DB 服务中将文档作为异步操作更新插入。
public System.Threading.Tasks.Task<Microsoft.Azure.Documents.Client.ResourceResponse<Microsoft.Azure.Documents.Document>> UpsertDocumentAsync (string collectionLink, object document, Microsoft.Azure.Documents.Client.RequestOptions options = default, bool disableAutomaticIdGeneration = false, System.Threading.CancellationToken cancellationToken = default);
abstract member UpsertDocumentAsync : string * obj * Microsoft.Azure.Documents.Client.RequestOptions * bool * System.Threading.CancellationToken -> System.Threading.Tasks.Task<Microsoft.Azure.Documents.Client.ResourceResponse<Microsoft.Azure.Documents.Document>>
Public Function UpsertDocumentAsync (collectionLink As String, document As Object, Optional options As RequestOptions = Nothing, Optional disableAutomaticIdGeneration As Boolean = false, Optional cancellationToken As CancellationToken = Nothing) As Task(Of ResourceResponse(Of Document))
参数
- collectionLink
- String
用于更新插入文档的 的链接 DocumentCollection 。 例如 dbs/db_rid/colls/coll_rid/
- document
- Object
要更新插入的文档对象。
- options
- RequestOptions
(可选) 要设置的任何请求选项。 例如,指定要在创建文档时执行的触发器。 RequestOptions
- disableAutomaticIdGeneration
- Boolean
(可选) 禁用自动 ID 生成,如果为 True,则当文档中缺少 id 属性时,系统将引发异常。
- cancellationToken
- CancellationToken
(可选) A CancellationToken ,其他对象或线程可以使用它来接收取消通知。
返回
Document在 表示异步操作的服务响应的 对象中包含的Task已更新插入的 。
例外
collectionLink
如果未设置 或 document
。
表示异步处理期间发生的故障的合并。 在 InnerExceptions 中查找实际异常 ()
此异常可以封装许多不同类型的错误。 若要确定特定错误,请始终查看 StatusCode 属性。 创建文档时可能会获取的一些常见代码包括:
StatusCode | 异常原因 |
---|---|
400 | BadRequest - 这意味着提供的文档出现问题。 可能是这样 disableAutomaticIdGeneration ,并且未提供 ID |
403 | 禁止 - 这可能意味着你尝试将文档更新插入到的集合已满。 |
409 | 冲突 - 表示 Document ID 与 ID 字段匹配的 document 已存在 |
413 | RequestEntityTooLarge - 这意味着 Document 超出了当前最大实体大小。 有关限制和配额,请参阅文档。 |
429 | TooManyRequests - 这意味着已超出每秒请求单位数。 请参阅 DocumentClientException.RetryAfter 值,了解在重试此操作之前应等待多长时间。 |
示例
Azure Cosmos DB 支持多种不同的文档处理方式。 文档可以扩展 Resource
public class MyObject : Resource
{
public string MyProperty {get; set;}
}
using (IDocumentClient client = new DocumentClient(new Uri("service endpoint"), "auth key"))
{
Document doc = await client.UpsertDocumentAsync("dbs/db_rid/colls/coll_rid/", new MyObject { MyProperty = "A Value" });
}
文档可以是可序列化为 JSON 的任何 POCO 对象,即使它不是从 Resource
public class MyPOCO
{
public string MyProperty {get; set;}
}
using (IDocumentClient client = new DocumentClient(new Uri("service endpoint"), "auth key"))
{
Document doc = await client.UpsertDocumentAsync("dbs/db_rid/colls/coll_rid/", new MyPOCO { MyProperty = "A Value" });
}
文档也可以是动态对象
using (IDocumentClient client = new DocumentClient(new Uri("service endpoint"), "auth key"))
{
Document doc = await client.UpsertDocumentAsync("dbs/db_rid/colls/coll_rid/", new { SomeProperty = "A Value" } );
}
更新插入文档并执行 Pre 和 Post 触发器
using (IDocumentClient client = new DocumentClient(new Uri("service endpoint"), "auth key"))
{
Document doc = await client.UpsertDocumentAsync(
"dbs/db_rid/colls/coll_rid/",
new { id = "DOC123213443" },
new RequestOptions
{
PreTriggerInclude = new List<string> { "MyPreTrigger" },
PostTriggerInclude = new List<string> { "MyPostTrigger" }
});
}
另请参阅
适用于
UpsertDocumentAsync(Uri, Object, RequestOptions, Boolean, CancellationToken)
在 Azure Cosmos DB 服务中将文档更新为异步操作。
public System.Threading.Tasks.Task<Microsoft.Azure.Documents.Client.ResourceResponse<Microsoft.Azure.Documents.Document>> UpsertDocumentAsync (Uri documentCollectionUri, object document, Microsoft.Azure.Documents.Client.RequestOptions options = default, bool disableAutomaticIdGeneration = false, System.Threading.CancellationToken cancellationToken = default);
abstract member UpsertDocumentAsync : Uri * obj * Microsoft.Azure.Documents.Client.RequestOptions * bool * System.Threading.CancellationToken -> System.Threading.Tasks.Task<Microsoft.Azure.Documents.Client.ResourceResponse<Microsoft.Azure.Documents.Document>>
Public Function UpsertDocumentAsync (documentCollectionUri As Uri, document As Object, Optional options As RequestOptions = Nothing, Optional disableAutomaticIdGeneration As Boolean = false, Optional cancellationToken As CancellationToken = Nothing) As Task(Of ResourceResponse(Of Document))
参数
- documentCollectionUri
- Uri
要更新插入文档的文档集合的 URI。
- document
- Object
文档对象。
- options
- RequestOptions
(可选的) RequestOptions 请求的 。
- disableAutomaticIdGeneration
- Boolean
用于禁用自动 ID 生成的标志。
- cancellationToken
- CancellationToken
(可选) A CancellationToken ,其他对象或线程可以使用它来接收取消通知。
返回
表示异步操作的服务响应的任务对象。