Я использую AutoMapper для сопоставления одного типа с его эквивалентом Dynamo. Я хочу сохранить список объектов ob в объекте Dyanmo, поэтому я конвертирую его дочерние объекты в документы Dynamo. Однако, когда я пытаюсь обновить Dynamo новым типом, я получаю следующую ошибку:
Type Amazon.DynamoDBv2.DocumentModel.DynamoDBEntry is unsupported, it cannot be instantiated
Вот моя модель:
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;
}
Вы нашли какое-нибудь решение?
Оказалось, что мне не следовало использовать DynamoDBList / Document, поскольку я не использовал модель Document. Я мог бы просто использовать List<TourItineraryDay>, поскольку Dynamo решило бы это для себя. Я изменил свойство Itinerary в моей модели TourDetail на тип List<TourItineraryDay> и удалил явное отображение автомата для этого члена.





Проблема заключалась в том, что в моем примере я смешиваю модель данных 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; }
}
Теперь я исключил AutoMapper как проблему, вручную преобразовав один объект в другой. Та же ошибка.