gpt4 book ai didi

c# - cosmos db 中的异步查询

转载 作者:搜寻专家 更新时间:2023-10-30 20:33:38 25 4
gpt4 key购买 nike

我正在尝试在 cosmos 数据库中进行查询。我想要一个异步查询。查询只返回一个元素。在网络上,我看到了当查询返回多个元素时如何做到这一点。这是我的方法:

    public async Task<TenantDetails> ReadBrokerSettings(string tenantId)
{
FeedOptions queryOptions = new FeedOptions { MaxItemCount = -1 };

var tenantDTO = this._client.CreateDocumentQuery<TenantDTO>(
UriFactory.CreateDocumentCollectionUri(_idDatabase, _idCollection), queryOptions)
.Where(f => f.tenantId == tenantId)
.AsEnumerable()
.SingleOrDefault();

return tenantDTO != null ? _iTenantAssembler.DtoToEntity(tenantDTO) : null;
}

编译器告诉我它不是异步的。谢谢

最佳答案

那是因为它不是异步的。您需要将其转换为文档查询并使用 HasMoreResults + ExecuteNextAsync组合并使用 await ExecuteNextAsync 上的关键字.

这是一个工作示例:

public async Task<TenantDetails> ReadBrokerSettings(string tenantId)
{
FeedOptions queryOptions = new FeedOptions { MaxItemCount = 1 };

var query = this._client.CreateDocumentQuery<TenantDTO>(
UriFactory.CreateDocumentCollectionUri(_idDatabase, _idCollection), queryOptions)
.Where(f => f.tenantId == tenantId).AsDocumentQuery();

while(query.HasMoreResults)
{
var results = await query.ExecuteNextAsync();
if(results.Any())
{
return _iTenantAssembler.DtoToEntity(results.Single());
}
}

return null;
}

关于c# - cosmos db 中的异步查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54037205/

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