DynamoDB'Type DynamoDBEntry不受支持'

问题描述 投票:0回答:1

我正在使用AutoMapper从一种类型映射到它的Dynamo等价物。我想在Dyanmo对象中存储一个列表ob对象,所以我将它的子对象转换为Dynamo Documents。但是,当我尝试使用新类型更新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;
}
c# amazon-web-services amazon-dynamodb automapper
1个回答
1
投票

问题是我在我的例子中混合了Dynamo数据模型和文档模型。使用数据模型时,您无需担心将集合转换为特定于Dynamo的类型,如DynamoDBListList<Document>。这些类型是Document模型的一部分,对于数据模型不是必需的。

解决方案是只更改Itinerary模型中的TourDetail属性以键入List<TourItineraryDay>并删除该成员的显式Automapper映射。

public class TourDetail
{
    [DynamoDBHashKey]
    public string TourId { get; set; }
    public List<TourItineraryDay> Itinerary { get; set; }
}
© www.soinside.com 2019 - 2024. All rights reserved.