更新CosmosDB中的类型化对象

时间:2018-07-09 09:38:36

标签: asp.net-core replace .net-core azure-cosmosdb

我想更新CosmosDB中的文档,为此,我首先检索文档并将其转换为类型化的对象,如下所示:

public async Task<T> ReadRawAsync(Expression<Func<T, bool>> predicate)
{
    var query = _client
        .CreateDocumentQuery<T>(_uri)
        .Where(predicate)
        .AsDocumentQuery();

    var results = new List<T>();
    while (query.HasMoreResults)
        results.AddRange(await query.ExecuteNextAsync<T>());

    return results.FirstOrDefault();
}

经过一些转换后,我想更新(替换)该文档:

await _client.ReplaceDocumentAsync(_uri, document);

我不确定这是否可以通过这种方式完成。您能否指出进行此类更新所需的条件?

1 个答案:

答案 0 :(得分:1)

ReplaceDocumentAsync仅在document具有名为id的属性时才有效(请注意,小写字母需要序列化为小写id,因此您可能需要JsonProperty(“ id “)),并且此ID中的文档必须存在于集合中。

如果您的集合已分区,则需要在此方法中提供下一个对象RequestOptions,并在其中添加此文档的PartitionKey值。