Amazon DynamoDB - 有没有办法不指定每个AttributeName?

时间:2013-09-26 00:43:01

标签: c# .net amazon-dynamodb

阅读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字典。如果我没有,我宁愿不去。

一如既往,提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

在每个putItem请求中,您应指定要存储的所有属性。如果您错过了其中一些 - 它们的值将从DynamoDB中删除。目前还没有解决方法。要更改一个属性,首先应getItem,在内存中更改它,然后将putItem更改回DynamoDB。

答案 1 :(得分:1)

实际上,亚马逊已经完全符合我的要求:.NET Object Persistence Model

这会照顾你的对象序列化 - 太棒了!