[英]async query in cosmos db
我正在尝试在 cosmos db 中进行查询。 我想要一个异步查询。 查询只返回一个元素。 在网上,我已经看到了当查询返回多个元素时如何做到这一点。 这是我的方法:
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
组合并在ExecuteNextAsync
上使用await
关键字。
这是一个工作示例:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.