Home Articles

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

Asked
Viewed 725 times
0
//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();
    }

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

谢谢 .

1 Answer

  • 4

    映射对象时,DynamoDB确实接受 null 作为属性值 . 它只是在内部删除属性 .

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

Related