簡體   English   中英

Azure Cosmos DB:“ToString”不是可識別的內置函數名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM