【发布时间】: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