DocumentClient CreateDocumentQuery抛出“不支持AsSQL”

时间:2020-03-14 02:55:39

标签: azure-cosmosdb

我正在尝试查询CosmosDB表中的记录。我使用以下语法:

字符串sql = $“ SELECT * FROM i i WHERE i.b ='foobar'”;

然后致电:

    public async Task<bool> ExecuteQueryIdentity<T>(string collectionName, string sql)
    {
        if (database == null)
            database = await client.CreateDatabaseIfNotExistsAsync(new Database { Id = DatabaseName });

        DocumentCollection collection = GetCollectionIfExists(collectionName);

        Uri collectionUri = UriFactory.CreateDocumentCollectionUri(DatabaseName, collectionName);

        var results = client.CreateDocumentQuery<T>(
            collectionUri,
            sql,
            DefaultOptions);

        return results != null && results.Count() > 0;            

    }

我收到以下错误:

不支持方法'AsSQL'。仅支持LINQ方法。

根据Microsoft示例,我可以使用linq,lambda linq和sql进行调用。我需要设置数据库或集合创建设置吗?我做错了什么?

1 个答案:

答案 0 :(得分:2)

所以我发现了问题。在代码的最后一行,我调用:

results.Count()

Count()是一个linq调用,结果集令人窒息。可以,因为我应该编写一个更好的查询,以便仅返回计数。但是,这显然是各种API之间如何交互的错误。

我想知道那些投下我票的人是否理解我在API中发现了合法的错误。如果这两个API在这种情况下互不支持,恕我直言,这是一个错误,并且至少应该有一个编译警告,但可能是一个错误。

相关问题