gpt4 book ai didi

c# - 读取可能不存在的 Azure DocumentDB 文档

转载 作者:可可西里 更新时间:2023-11-01 08:40:34 32 4
gpt4 key购买 nike

我可以像这样从 Azure DocumentDB 查询单个文档:

var response = await client.ReadDocumentAsync( documentUri );

如果文档不存在,则会抛出 DocumentClientException。在我的程序中,我遇到了该文档可能存在也可能不存在的情况。有没有办法在不使用 try-catch 的情况下查询文档,并且无需对服务器进行两次往返,首先查询文档,然后检索文档(如果存在)?

最佳答案

遗憾的是,没有其他方法,要么处理异常,要么进行两次调用,如果您选择第二条路径,这是一种检查文档存在的性能驱动方法:

public bool ExistsDocument(string id)
{
var client = new DocumentClient(DatabaseUri, DatabaseKey);
var collectionUri = UriFactory.CreateDocumentCollectionUri("dbName", "collectioName");
var query = client.CreateDocumentQuery<Microsoft.Azure.Documents.Document>(collectionUri, new FeedOptions() { MaxItemCount = 1 });
return query.Where(x => x.Id == id).Select(x=>x.Id).AsEnumerable().Any(); //using Linq
}

客户端应该在所有数据库访问方法之间共享,但我在那里创建它是为了有一个自动充足的示例。

new FeedOptions () {MaxItemCount = 1}将确保查询针对 1 个结果进行优化(我们实际上不需要更多)。

Select(x=>x.Id)将确保不返回其他数据,如果您不指定它并且文档存在,它将查询并返回所有信息。

关于c# - 读取可能不存在的 Azure DocumentDB 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35482455/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com