DynamoDB «Тип DynamoDBEntry не поддерживается» - PullRequest
0 голосов
/ 04 мая 2018

Я использую AutoMapper для сопоставления одного типа с его динамовским эквивалентом. Я хочу сохранить список объектов в объекте Dyanmo, поэтому я конвертирую его дочерние объекты в документы Dynamo. Однако, когда я пытаюсь обновить Dynamo новым типом, он выдает мне эту ошибку:

Тип Amazon.DynamoDBv2.DocumentModel.DynamoDBEntry не поддерживается, создание экземпляра невозможно

Вот моя модель:

public class TourDetail
{
    [DynamoDBHashKey]
    public string TourId { get; set; }
    public DynamoDBList Itinerary { get; set; }
}

Вот мой код AutoMapper:

public DynamoModelMapper()
{
    CreateMap<TourDetail, Models.Dynamo.TourDetail>()
        .ForMember(x => x.Itinerary, x => x.MapFrom(y => convertItinerary(y.Itinerary)));
}

private List<Document> convertItinerary(IEnumerable<TourItineraryDay> itineraryDays)
{
    var docList = new List<Document>();

    foreach (var itineraryDay in itineraryDays)
    {
        var doc = new Document();
        doc.Add("day", itineraryDay.Day);
        doc.Add("title", itineraryDay.Title);
        doc.Add("description", itineraryDay.Description);
        docList.Add(doc);
    }

    return docList;
}

1 Ответ

0 голосов
/ 21 мая 2018

Проблема заключалась в том, что я смешал модель данных Dynamo и модель документа в моем примере. При использовании модели данных вам не нужно беспокоиться о преобразовании ваших коллекций в типы Dynamo, такие как DynamoDBList или List<Document>. Эти типы являются частью модели документа и не являются необходимыми для модели данных.

Решением было просто изменить свойство Itinerary в моей модели TourDetail на тип List<TourItineraryDay> и удалить явное сопоставление Automapper для этого члена.

public class TourDetail
{
    [DynamoDBHashKey]
    public string TourId { get; set; }
    public List<TourItineraryDay> Itinerary { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...