DynamoDB'Type DynamoDBEntry不受支持'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DynamoDB'Type DynamoDBEntry不受支持'相关的知识,希望对你有一定的参考价值。
我正在使用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;
}
答案
问题是我在我的例子中混合了Dynamo数据模型和文档模型。使用数据模型时,您无需担心将集合转换为特定于Dynamo的类型,如DynamoDBList
或List<Document>
。这些类型是Document模型的一部分,对于数据模型不是必需的。
解决方案是只更改Itinerary
模型中的TourDetail
属性以键入List<TourItineraryDay>
并删除该成员的显式Automapper映射。
public class TourDetail
{
[DynamoDBHashKey]
public string TourId { get; set; }
public List<TourItineraryDay> Itinerary { get; set; }
}
以上是关于DynamoDB'Type DynamoDBEntry不受支持'的主要内容,如果未能解决你的问题,请参考以下文章
可以将HASH密钥更新为预先存在的Dynamodb全局二级索引的另一个属性吗?
DynamoDB 使用 Cloudformation 自动扩展