Azure cosmosdb 将值映射到select中的类模型时,成员索引器出现Cosmos DB错误

Azure cosmosdb 将值映射到select中的类模型时,成员索引器出现Cosmos DB错误,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure Cosmosdb,Azure Cosmosdb Sqlapi,我遇到了Cosmos DB的问题,如果我试图将索引成员映射到类上的属性,它会抛出一个错误。但是,如果我将查询切换为映射到匿名类型,它就可以正常工作 一些设置舞台的代码 CosmosClient客户端=新的CosmosClient(connectionString); var container=client.GetContainer(DatabaseId,CollectionId); var q=container.GetItemLinqQueryable(allowSynchronousQue

我遇到了Cosmos DB的问题,如果我试图将索引成员映射到类上的属性,它会抛出一个错误。但是,如果我将查询切换为映射到匿名类型,它就可以正常工作

一些设置舞台的代码

CosmosClient客户端=新的CosmosClient(connectionString);
var container=client.GetContainer(DatabaseId,CollectionId);
var q=container.GetItemLinqQueryable(allowSynchronousQueryExecution:true);
var testName=“Test”;
//类,该类用于映射select
公共类模型{
公共字符串名称{get;set;}
}
//示例CosmosDB文档实体结构
公共类实体
{
公共子项{get;set;}
}
公营儿童
{
公共字符串名称{get;set;}
公共字典名为children{get;set;}
}
这会奏效的
var items=q.Select(q=>new{Name=q.Child.NamedChildren[testName].Name}).ToList();
并生成此工作sql

从根目录中选择值{“Name”:root[“Child”][“NamedChildren”][“Test”][“Name”]}
这行不通 如果我将select映射到模型类(请参见下面的“新模型”),它将抛出一个错误

var items=q.Select(q=>newmodel{Name=q.Child.NamedChildren[testName].Name}).ToList()
生成不正确的sql

从根目录中选择值{“Name”:root[“Child”][“NamedChildren”][{“testName”:“Test”}[“testName”]][“Name”]}
这是来自Cosmos DB的错误

Microsoft.Azure.Cosmos.Query.Core.Exceptions.ExpectedQueryPartitionProviderException:

{
“错误”:[
{
“严重性”:“错误”,
“地点”:
{
“开始”:22,
“完”:86
},
“代码”:“SC2990”,
“消息”:“指定的查询包括当前不受支持的‘成员索引器’。”
]
}
不过,使用常量会改变结果 如果我改变

var testName=“test”;
将来

const string testName=“test”;
然后,不起作用的代码会工作,“sql”会更改为预期的值

从根目录中选择值{“Name”:root[“Child”][“NamedChildren”][“Test”][“Name”]}
我可以填充匿名类型的集合,然后映射到强类型集合,但显然不理想

我很难理解为什么它会失败,因为我认为类映射发生在查询完成并返回之后。但是,实际的查询/SQL是不同的

这是一个bug,还是有什么我不知道的地方,为什么会失败或者工作方式不同