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

use*_*392 0 linq azure nosql azure-cosmosdb

在 Cosmos DB v3 中,我得到了一个IOrderedQueryable<T>using GetItemLinqQueryable<T>. 这允许我编写自定义查询。问题是我想在查询实现时跟踪请求费用。如何才能做到这一点?

当我执行像ReadItemAsyncand之类的方法时ExecuteStoredProcedureAsync,返回的对象有一个RequestCharge属性,但我需要使用 linq 查询检测费用。

Ale*_*AIT 6

您可以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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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