//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 回答
映射对象时,DynamoDB确实接受
null
作为属性值 . 它只是在内部删除属性 .如果需要2个空值(null和空字符串),则必须使用__EMPTY_STRING常量,否则 - 您只需使用
null
.