Cosmos DB:如何使用LINQ查询检测请求费用

时间:2020-08-22 20:19:20

标签: azure linq nosql azure-cosmosdb

在Cosmos DB v3中,我使用IOrderedQueryable<T>得到了GetItemLinqQueryable<T>。这使我可以编写自定义查询。问题是,无论何时实现查询,我都希望跟踪请求费用。如何做到这一点?

当我执行ReadItemAsyncExecuteStoredProcedureAsync之类的方法时,返回的对象具有RequestCharge属性,但是我需要使用linq查询来检测费用。

1 个答案:

答案 0 :(得分:2)

您可以在ToFeedIterator上使用扩展方法IOrderedQueryable

using Microsoft.Azure.Cosmos.Linq;

var query = container.GetItemLinqQueryable<MyClass>()
    .Where(c => true)
    .ToFeedIterator();

while (query.HasMoreResults)
{
    var response = await query.ReadNextAsync();

    Console.WriteLine(response.RequestCharge);

    foreach (var myClassInstance in response)
    {
        // do stuff
    }
}

编辑:如果需要计数或任何聚合函数:

var query = container.GetItemLinqQueryable<MyClass>()
    .Where(c => true);
Response<int> x = await query.CountAsync();
Console.WriteLine(x.RequestCharge);
int count = x; // Autoboxing

您可以在GitHub上找到可用扩展功能的完整列表。