gpt4 book ai didi

c# - 使用 Microsoft.Azure.Cosmos 时如何获取已编译的查询

转载 作者:行者123 更新时间:2023-12-03 00:01:45 24 4
gpt4 key购买 nike

当使用 nuget Microsoft.Azure.DocumentDB 及其 DocumentClient 类时,您可以获得将针对 cosmos 执行的已编译查询。就像这样:

var documentClient = new DocumentClient(new Uri(endpoint), authKey);

var query = documentClient
.CreateDocumentQuery<Product>(collectionUrl, queryOptions)
.Where(x => x.Id == "apple-iphone")
.Select(x => new
{
x.Id
})
.AsDocumentQuery();

// Here you can inspect the compiled query: "SELECT VALUE {"Id": root["id"]} FROM root WHERE (root["id"] = "apple-iphone")"
var rawQuery = query.ToString();

但是,当使用 Microsoft.Azure.Cosmos 时,我没有看到任何已编译的查询,也没有看到在调试和检查变量时如何提取它:

var container = new CosmosClientBuilder(endpoint, authKey)
.WithConnectionModeDirect()
.WithThrottlingRetryOptions(TimeSpan.FromSeconds(30), 10)
.Build()
.GetContainer(databaseId, collectionId);

var query = container
.GetItemLinqQueryable<Product>(requestOptions: queryOptions)
.Where(x => x.Id == "apple-iphone")
.Select(x => new
{
x.Id
})
.ToFeedIterator();

// How do I get the compiled query here???
var rawQuery = query.ToString();

是否有办法获取使用 Microsoft.Azure.Cosmos 时针对 cosmos 执行的已编译查询?

最佳答案

在调用 ToFeedIterator() 之前,您可以在 IQueryable 上调用 queryable.ToQueryDefinition().QueryText。您还可以直接调用 ToString() 来获取 SQL 查询定义,就像 v2 中一样。

关于c# - 使用 Microsoft.Azure.Cosmos 时如何获取已编译的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64008554/

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