//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或为空。
谢谢。
答案 0 :(得分:6)
DynamoDB在映射对象时接受null
作为属性值。它只是在内部删除了属性。
如果您需要2个空值(空和空字符串),则必须使用__EMPTY_STRING常量,否则 - 您可以使用null
。