我正在尝试在我的MVC .net项目中使用Amazon AWS中的DynamoDB。我也在尝试做一个Business-DataAccess-Model分层项目。
我有一个GenericDataRepository类,它实现了Add()功能。
我正在向Add()发送一个T对象,我想动态地将它转换为亚马逊的Document对象。我怎么能这样做,最佳做法是什么?
public void Add(T entity)
{
if (entity == null)
return;
var doc = new Document();
// Convert entity to Document automatically
doc["Title"] = entity.Title;
doc["Body"] = entity.Body;
doc["Author"] = entity.Author;
// Convert entity to Document automatically
.....
.....
.....
}
您可以使用反射来动态填充文档:
public void Add(T entity)
{
if (entity == null)
return;
var doc = new Document();
entity.GetType().GetProperties().ToList().ForEach(x => doc[x.Name] = x.GetValue(entity));
...
}
我想你可以使用Json.net将你的对象序列化为json,然后根据他们的文档创建dynamoDb文档:
var jsonText = JsonConvert.SerializeObject(entity, Formatting.Indented);
var item = Document.FromJson(jsonText);
在最新版本的aws dynamo db SDK中。支持此功能,您可以毫不费力地实现您的目标。简单快速
public Document Add <T>(T entity, IAmazonDynamoDB dbClient)
{
Amazon.DynamoDBv2.DataModel.DynamoDBContext db = new Amazon.DynamoDBv2.DataModel.DynamoDBContext(dbClient);
Document document = db.ToDocument(entity);
return document;
}
不要忘记将[Serializable]属性添加到T对象。