删除DynamoDB中映射字段的空字符串或空字符串

时间:2013-11-30 17:13:17

标签: c#-4.0 amazon-web-services amazon-dynamodb

//Data Model

[DynamoDBTable("ContactsTable")]
public class Contact
{
    [DynamoDBHashKey(AttributeName = "Id")]
    public string Id { get; set; }

    [DynamoDBProperty(AttributeName = "FirstName")]
    public string FirstName { get; set; }

    [DynamoDBProperty(AttributeName = "LastName")]
    public string LastName { get; set; }

    [DynamoDBProperty(AttributeName = "Address1")]
    public string Address1 { get; set; }

    [DynamoDBProperty(AttributeName = "Address2")]
    public string Address2 { get; set; }
}

    public void SaveContactsToDynamoDb()
    {
        var config = new AmazonDynamoDBConfig();
        config.ServiceURL = ConfigurationManager.AppSettings["ServiceURL"];

        var context = new DynamoDBContext(new AmazonDynamoDBClient(config));

        var contactBatchWrite = context.CreateBatchWrite<Contact>();

        var contacts = GetContacts();

        contactBatchWrite.AddPutItems(contacts.Select(contact => new Contact
        {
            Id = contact.Id.ToString(),
            FirstName = contact.FirstName,
            LastName = contact.LastName,
            Address1 = contact.Address1,
            Address2 = contact.Address2
        }));

        contactBatchWrite.Execute();
    }

当我执行它时,它返回一个异常,说&#34; AttributeValue可能不包含空字符串&#34;。据我所知,正在映射的特定联系人的某些字段可能包含空字段。由于DynamoDB不接受空字段或空字段,是否有任何方法可以修改数据模型以向属性添加一些属性,忽略它的null或空?或者任何人都可以给我一个更好的方法来映射/处理这种情况。我不想添加常数,例如&#34; N / A&#34;如果为null或为空。

谢谢。

1 个答案:

答案 0 :(得分:6)

DynamoDB在映射对象时接受null作为属性值。它只是在内部删除了属性。

如果您需要2个空值(空和空字符串),则必须使用__EMPTY_STRING常量,否则 - 您可以使用null