DynamoDB не может преобразовать в System.DateTime - PullRequest
0 голосов
/ 19 декабря 2018

Я использую модель постоянства объектов C # в своем приложении и заполняю таблицу из внешнего источника.Я вставляю строку со следующей датой (в столбце String): 2018-12-12T22:27:14.73Z.Он генерируется из отметки времени с использованием следующего кода Go:

&dynamodb.AttributeValue{S: aws.String(entity.TimeStamp.UTC().Format("2006-01-02T15:04:05.999Z"))}

Однако модель устойчивости объекта DynamoDB блокируется при попытке преобразовать ее в System.DateTime со следующей ошибкой: System.InvalidOperationException: Unable to convert [2018-12-12T22:27:14.73Z] of type Amazon.DynamoDBv2.DocumentModel.Primitive to System.DateTime

Если я позволю своему сервису написать System.DateTime (используя POCO, который содержит свойство DateTime), это будет выглядеть примерно так: 2018-12-19T07:45:36.431Z.Чего мне не хватает, что мешает AWS правильно десериализовать мои даты?Похоже, я пишу их в том же формате, в котором их пишет Amazon?

1 Ответ

0 голосов
/ 19 декабря 2018

Хорошо, я нашел ответ.DynamoDB ожидает, что столбец всегда будет иметь 3 цифры точности в дробной части метки времени.Когда я форматировал время из Голанга, я использовал "2006-01-02T15:04:05.999Z" в качестве строки форматирования, но это заставляет time.Format обрезать конечные нули (когда они существуют).Изменив строку формата времени на всегда для печати с полной точностью, я смог исправить свои проблемы.

Тем не менее, документация может быть немного более ясной об этом требовании точности.Или исключение может быть немного более явным.Он надеется, что этот вопрос / ответ сделает это исключение доступным для поиска в Google!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...