【问题标题】:Remove null or empty strings for mapped fields in DynamoDB删除 DynamoDB 中映射字段的 null 或空字符串
【发布时间】:2013-12-16 16:16:05
【问题描述】:
//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”这样的常量。

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。我还有另一个问题,您认为您可以向我提供您的建议吗 - 关于查询 DynamoDB。 stackoverflow.com/questions/20329008/…
    • @chen-harel 你知道有没有办法通过 boto3 来处理这个问题?所以在 put_item() 操作中,如果有任何属性是 '' ,它将相应地处理它。我问是因为我的用例是我们事先不知道我们的属性...
    猜你喜欢
    • 1970-01-01
    • 2014-10-15
    • 2018-11-21
    • 2021-05-16
    • 1970-01-01
    • 2016-05-30
    • 2012-03-06
    • 2018-11-13
    • 1970-01-01
    相关资源
    最近更新 更多