Запрос различных значений из NoSQL (в частности, Cosmos DB) не может быть преобразован в тип модели - PullRequest
0 голосов
/ 12 апреля 2019

Сводка

Короче говоря, я пытаюсь отобразить все отдельные идентификаторы.Я пытаюсь понять, почему, когда я впервые запустил свой запрос (не различаясь), я смог использовать их с моей моделью, а не сейчас.Я получаю ошибку: Cannot convert from System.String to AppName.Models.Student.

Пример

Например, отображение всех идентификаторов из моей коллекции (с повторными идентификаторами в документах): "SELECT s.ClassId from Students s" сработалохорошо, но когда я попытался получить различные значения, он не смог преобразовать их, с запросом SELECT DISTINCT VALUE s.ClassId from Students s"

Это мой запрос к базе данных Cosmos:

   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"
   }
}

1 Ответ

0 голосов
/ 13 апреля 2019

Итак, ошибка была в запросе, который я передал. При добавлении к нему VALUE вы получаете

["en","sp"]

Однако то, что я ожидал получить, было

[{"id": "en"}, {"id": "sp"}]
...