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

IDocumentClient.UpsertDocumentAsync 方法

定义

重载

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异常原因
400BadRequest - 这意味着提供的文档出现问题。 可能是这样 disableAutomaticIdGeneration ,并且未提供 ID
403禁止 - 这可能意味着你尝试将文档更新插入到的集合已满。
409冲突 - 表示 Document ID 与 ID 字段匹配的 document 已存在
413RequestEntityTooLarge - 这意味着 Document 超出了当前最大实体大小。 有关限制和配额,请参阅文档。
429TooManyRequests - 这意味着已超出每秒请求单位数。 请参阅 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 ,其他对象或线程可以使用它来接收取消通知。

返回

表示异步操作的服务响应的任务对象。

适用于