Проблемы десериализации из CosmosDB при миграции из MongoDB.Driver в Azure DocumentClient - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь повторно реализовать класс, который читает из Azure CosmosDB, используя Microsoft.Azure.Documents.Client.DocumentClient, чтобы я мог использовать функциональность токена продолжения.

Однако, когда я пытаюсь получить данные, я получаю следующую ошибку:

Ошибка при преобразовании значения \ "NWE2OGY5MzYzMmY0OGIlM2Ix \" в тип 'MongoDB.Bson.ObjectId'

Начнем с того, что это не одно из наших значений id, но я попытался реализовать ObjectIdConverter как подробно здесь , но затем начал получать эту ошибку:

Строка должна содержать только шестнадцатеричные цифры.

Поскольку значение, которое он пытается использовать, не соответствует идентификатору записи.

Затем я вставил JsonConverter для реального объекта, к которому я пытаюсь десериализоваться, и загрузил json в JObject, чтобы я мог видеть, с чем имею дело.

Структура не соответствует тому, что я ожидаю или что я вижу в Robo 3T:

{{
  "$t": 3,
  "$v": {
    "_id": {
      "$t": 7,
      "$v": "ù62ô;Üöã±"
    },
    "Channel": {
      "$t": 2,
      "$v": "channel"
    },
    "TopicRoutingKey": {
      "$t": 18,
      "$v": 123,
      "$s": "123"
    },
    "SequenceNumber": {
      "$t": 18,
      "$v": 1,
      "$s": "1"
    },
    "CorrelationId": {
      "$t": 5,
      "$v": "00000006\u0003Ù\bÜ\"²f@\u085L+SæÝ"
    },
    "Message": {
      "$t": 2,
      "$v": "2gIUCJSAOBGMCv1eTLCAHKJ2QjhUx/iCtT5t0YsfS10JIsIJSAOQ=="
    }
  },
  "id": "NWE2OGY5MzmRjZjZlM2Ix",
  "_rid": "znt6AKAAAAAAAAA==",
  "_self": "dbs/znt6AA==/colls/znt6AK0j8AU=/docs/znt6AKAAAAAAAAA==/",
  "_etag": "\"3b02af0b-0000-0000-0000-5a68f9370000\"",
  "_attachments": "attachments/",
  "_ts": 1516828983
}}

Я предполагаю, что это кортежи типа / значения, и я вижу, что нужные данные находятся в корне $v:, но я не могу понять, как десериализовать это (если не считать саму репликацию структуры данных и затем десериализацию к нему, затем преобразование в мою фактическую структуру данных, которая, кажется, не обязательна).

Может кто-нибудь сказать мне, что здесь происходит?

...