从NoSQL(特定于Cosmos DB)查询不同的值无法转换为模型类型

问题描述 投票:0回答:1

摘要

总之,我试图显示所有不同的ID。我试图理解为什么当我第一次运行我的查询(不是明显的)时,我能够将它们与我的模型一起使用而不是现在。我得到的错误是Cannot convert from System.String to AppName.Models.Student

例如,显示我的集合中的所有ID(在文档中重复ID):"SELECT s.ClassId from Students s"工作正常,但当我尝试获取不同的值时,它无法转换它们,查询为SELECT DISTINCT VALUE s.ClassId from Students s"

这是我对Cosmos DB的查询:

   public List<T> Query(string query)
        {
            FeedOptions queryOptions = new FeedOptions { MaxItemCount = -1, EnableCrossPartitionQuery = true };

            // Execute query via SQL
            IQueryable<T> QueryInSql = Client.CreateDocumentQuery<T>(
                    UriFactory.CreateDocumentCollectionUri(Database, Collection),
                    $"{query}",
                    queryOptions);

            // convert Iqueryable to a list 
            return QueryInSql.ToList();
        }

我改变了我的模型以包含

public class Class
{
    public string ClassId {get; set;}
}

带文件的样品采集

{
   {
       "id":"abc",
       "studentName": "bob",
       "classId":"en" 
   },
   {
       "id":"bcd",
       "studentName": "billy",
       "classId":"sp"},
   {
       "id":"sdf",
       "studentName": "bart",
       "classId":"en"
   }
}
c# nosql azure-cosmosdb querying
1个回答
0
投票

所以,错误发生在我传入的查询中。当向它添加VALUE时,你会回来

["en","sp"]

然而,我认为我得到的是

[{"id": "en"}, {"id": "sp"}]
© www.soinside.com 2019 - 2024. All rights reserved.