阅读DynamoDB文档时,似乎在插入数据时无法列出每个属性名称/值。
例如,要插入用户,我需要执行此操作:
var putRequest = new PutItemRequest
{
TableName = UsersTableName,
Item = new Dictionary<string, AttributeValue>()
{
{"HashId", new AttributeValue() { S = user.Id.ToString() }},
{"RangeId", new AttributeValue() { S = user.Email }},
{"CreatedUtc", new AttributeValue() { S = user.CreatedUtc.ToString() }},
{"DeactivatedUtc", new AttributeValue() { S = user.DeactivatedUtc.ToString() }},
{"Timezone", new AttributeValue() { S = "US Eastern Standard Time" }},
}
};
var result = DbClient.PutItem(putRequest);
我喜欢RavenDb模型,它接受任何POCO并根据类的公共字段名称自行计算“属性”名称。
我的问题是:我需要这样做吗?是否可以通过传递对象来写入数据?
如果不是,我将写一些内容:我将使用反射来找出名称和类型,并基于此生成PutItemRequest.Item
字典。如果我没有,我宁愿不去。
一如既往,提前感谢您的帮助!
答案 0 :(得分:2)
在每个putItem
请求中,您应指定要存储的所有属性。如果您错过了其中一些 - 它们的值将从DynamoDB中删除。目前还没有解决方法。要更改一个属性,首先应getItem
,在内存中更改它,然后将putItem
更改回DynamoDB。
答案 1 :(得分:1)
实际上,亚马逊已经完全符合我的要求:.NET Object Persistence Model
这会照顾你的对象序列化 - 太棒了!