【问题标题】:What's with this weird error in the .Net CosmosDb SDK?.Net CosmosDb SDK 中的这个奇怪错误是怎么回事?
【发布时间】:2020-08-19 04:24:04
【问题描述】:

我正在尝试对我的 Azure CosmosDb 实例运行一个非常简单的查询。这是查询:

        var query = container.GetItemQueryIterator<string>(new QueryDefinition("SELECT c.id FROM c"));
        while (query.HasMoreResults)
        {
            var feed = query.ReadNextAsync().Result;
            var ids = feed.Select(x => x);
            foreach(var id in ids)
            {
                idsInDatabase.Add(id);
            }
        }
        return idsInDatabase.ToArray();

但是当它执行时,我收到一条错误消息,指出第 1 行第 2 位置有一个“意外字符”,如下所示:

这就像它试图解析 JSON 而不是我的 SQL 查询。这个例子似乎遵循我在网上看到的例子。我在这里错过了什么?

【问题讨论】:

    标签: c# azure-cosmosdb


    【解决方案1】:

    该查询的结果是一个包含“id”属性的 JSON,而不是字符串,您没有使用 VALUE。

    您是否尝试过以下类型:

    public class MyResult
    {
       public string id { get; set; }
    }
    
    var query = container.GetItemQueryIterator<MyResult>(new QueryDefinition("SELECT c.id FROM c"));
            while (query.HasMoreResults)
            {
                var feed = query.ReadNextAsync().Result;
                foreach(MyResult result in feed)
                {
                    idsInDatabase.Add(result.id);
                }
            }
            return idsInDatabase.ToArray();
    

    【讨论】:

    • 啊,我明白了。那讲得通。我需要定义一个具有属性“id”的对象。我来自 SQL + Dapper 世界,选择单个列被序列化为字符串数组,这样的东西是有效的。
    猜你喜欢
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 2015-02-27
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    相关资源
    最近更新 更多