如何为PutItemAsync定义嵌套属性?DynamoDB模型构建求助
解决DynamoDB嵌套属性"Options"的构建问题
DynamoDB的Document类支持嵌套对象结构,你需要通过创建子Document来实现Options的嵌套,而不是用点分隔的键名。以下是正确的实现方式:
手动构建嵌套文档
var storeInfo = new Document(); // 设置分区键与排序键 storeInfo["City"] = storeBody.City; storeInfo["NrStore"] = storeBody.NrStore; // 创建Options子文档并填充属性 var optionsDoc = new Document(); optionsDoc["Address"] = storeBody.Options.Address; optionsDoc["Square"] = storeBody.Options.Square; optionsDoc["ParkingSize"] = storeBody.Options.ParkingSize; optionsDoc["HasGroceries"] = storeBody.Options.HasGroceries; optionsDoc["HasHouseholdGoods"] = storeBody.Options.HasHouseholdGoods; // 将子文档绑定到主文档的Options键 storeInfo["Options"] = optionsDoc; // 执行写入操作 await dynamoDbClient.PutItemAsync(storeInfo);
简化写法(利用对象序列化)
如果storeBody.Options是一个实体类对象,可以直接通过Document.FromObject快速转换为嵌套文档,省去逐个赋值的步骤:
var storeInfo = new Document(); storeInfo["City"] = storeBody.City; storeInfo["NrStore"] = storeBody.NrStore; // 直接将Options对象转为嵌套文档 storeInfo["Options"] = Document.FromObject(storeBody.Options); await dynamoDbClient.PutItemAsync(storeInfo);
两种方式最终都会在DynamoDB中生成你需要的目标结构,Options会以JSON对象的形式存储为嵌套属性。
内容的提问来源于stack exchange,提问作者Burning Daylight
相关产品推荐
相关产品推荐

