我正在尝试查询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进行调用。我需要设置数据库或集合创建设置吗?我做错了什么?
答案 0 :(得分:2)
所以我发现了问题。在代码的最后一行,我调用:
results.Count()
Count()是一个linq调用,结果集令人窒息。可以,因为我应该编写一个更好的查询,以便仅返回计数。但是,这显然是各种API之间如何交互的错误。
我想知道那些投下我票的人是否理解我在API中发现了合法的错误。如果这两个API在这种情况下互不支持,恕我直言,这是一个错误,并且至少应该有一个编译警告,但可能是一个错误。