[英]Azure Cosmos DB: 'ToString' is not a recognized built-in function name
使用 Azure CosmosDB 的 SQL ToString 系統函數從使用Microsoft.Azure.Documents.Client.DocumentClient
客戶端的 Cosmos 容器獲取數據時出錯。 奇怪,但查詢在 Azure 門戶的數據資源管理器選項卡上運行良好。
https://docs.microsoft.com/en-us/azure/cosmos-db/sql-query-tostring
Assembly Microsoft.Azure.DocumentDB.Core, Version=1.9.1.0
Project .Net Core 2.2
查詢
select ToString(c) FROM c where c.id = 1
select value ToString(c) FROM c where c.id = 1
錯誤
Microsoft.Azure.Documents.BadRequestException: 'Message: {"errors":[{"severity":"Error","location":{"start":13,"end":21},"code":"SC2005","message":"'ToString' is not a recognized built-in function name."}]}'
更新 1
代碼如下
public async Task<IEnumerable<T>> GetItemsAsync<T>(string sqlExpression, string collectionName)
{
var option = new FeedOptions { EnableCrossPartitionQuery = true, MaxItemCount = 100 };
IDocumentQuery<T> query = this.client.CreateDocumentQuery<T>(
UriFactory.CreateDocumentCollectionUri(databaseName, collectionName), sqlExpression, option)
.AsDocumentQuery();
List<T> results = new List<T>();
while (query.HasMoreResults)
{
var items = await query.ExecuteNextAsync<T>();
results.AddRange(items);
}
return results;
}
string sqlExpression = $"SELECT ToString(C) FROM C WHERE C.id = {id}";
var jsons = await this.GetItemsAsync<string>(sqlExpression, collectionName);
更新 2
實際的 JSON
[
{
"id": "79332",
"pk": "2020081416PM",
"key": "134869d8-f291-4c96-affe-266d86ae95b8",
"version": 3,
"_self": "dbs/ddadfZp5AA==/colls/fZp5AJhvYZY=/docs/fZp5AJhvYZZ6AAAAAAAAAQ==/",
"_etag": "\"1f00dsd475d-0000-0200-0000-5f5f6edc0000\"",
"_ts": 1600089820
}
]
預期結果
[
"{\"id\":\"79332\",\"pk\":\"2020081416PM\",\"key\":\"134869d8-f291-4c96-affe-266d86ae95b8\",\"version\":3,\"_self\":\"dbs\\/fZp5AA==\\/colls\\/fZp5AJhvYZY=\\/docs\\/fZp5AJhvYZZ6AAAAAAAAAQ==\\/\",\"_etag\":\"\\\"1f00475d-0000-0200-0000-5f5f6edc0000\\\"\",\"_ts\":1600089820}"
]
我將程序集 (Microsoft.Azure.DocumentDB.Core) 升級到版本 2.11.6,它解決了問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.