DynamoDBGlobalSecondaryIndexRangeKey属性不会将值映射到字段

时间:2019-09-09 06:43:04

标签: c# amazon-dynamodb

我有这个模型:

public class Company
{
    [DynamoDBHashKey("PK")]
    public string Id { get;set; }

    [DynamoDBRangeKey("SK")]
    public string Type { get;set; }

    [DynamoDBGlobalSecondaryIndexRangeKey("GSI1")]
    [DynamoDBProperty]
    public string Name { get; set; }
}

我的索引称为GSI1,其分区键为Type(列名称为“ SK”),其排序键为名称为“ GSI1SK”的字段。

我假设如果我使用DynamoDbContext插入此模型的实例,它将创建具有以下属性的项目:

enter image description here

但是结果GSI1SK字段为空。
那么此DynamoDBGlobalSecondaryIndexRangeKey属性如何工作?
看起来好像要填充GSI1SK字段,我需要在模型中再创建一个字段并手动填充它。最好的选择是什么?

1 个答案:

答案 0 :(得分:0)

您在文本中描述的内容与代码之间存在一些差异。

一方面您写

  

,其排序键是名称为“ GSI1SK”的字段。

另一方面,您的代码将该字段的名称指定为GSI1

[DynamoDBGlobalSecondaryIndexRangeKey("GSI1")]

IIUC您想拥有一个字段,该字段在索引中具有一个名称,在表中具有不同的名称。与DDB交互的代码通常不是这样工作的(实际上,我不确定它是否受支持)。通常,一个字段只有一个名称,在通过表访问项目以及通过GSI访问该项目时,您都使用相同的名称。