在.NET中使用IAmazonDynamoDB如何给DynamoDB字段传入空字符串值?
写入空字符串到DynamoDB的实现方法
- 你遇到的写入失败是默认配置导致的:.NET AWS SDK 对 DynamoDB 操作默认开启
ConvertEmptyStringValues开关,会自动将空字符串转换为null值,而DynamoDB不允许写入null到字符串类型的非主键字段(除非显式指定Null类型)。 - DynamoDB原生支持空字符串作为普通属性的值,只需要按以下方式构造
UpdateItemAsync的请求即可:
var updateRequest = new UpdateItemRequest { TableName = "你的表名", // 定义主键 Key = new Dictionary<string, AttributeValue> { { "PK", new AttributeValue { S = "你的分区键值" } }, // 存在排序键则补充 // { "SK", new AttributeValue { S = "你的排序键值" } } }, // 定义更新表达式 UpdateExpression = "SET some_field = :emptyStrVal", // 显式指定属性为S(字符串)类型,值为空字符串 ExpressionAttributeValues = new Dictionary<string, AttributeValue> { { ":emptyStrVal", new AttributeValue { S = string.Empty } } } }; await amazonDynamoDBClient.UpdateItemAsync(updateRequest);
- 如果你使用的是
DynamoDBContext高级持久化API,需要在初始化时关闭空字符串自动转换配置:
var dbContextConfig = new DynamoDBContextConfig { Conversion = DynamoDBEntryConversion.V2, ConvertEmptyStringValues = false }; var dbContext = new DynamoDBContext(amazonDynamoDBClient, dbContextConfig);
注意:DynamoDB的分区键、排序键不允许使用空字符串作为值,如果你要写入的字段是主键,需要调整业务逻辑避免传入空字符串。
内容的提问来源于stack exchange,提问作者Vlad Varvashenko
相关产品推荐
相关产品推荐

