1

我有一个带有 GSI 的 DynamoDB 表,我需要使用 AWS .NET SDK 来检索两个特定属性,最好使用持久性模型。我为这个投影创建了一个单独的类,如下所示

[DynamoDBTable("MyTable")]
public class MyItem
{
    public long Number{ get; set; }

    public string Name{ get; set; }
}

但即使我指定SelectValues.SpecificAttributes只获取这些属性,DynamoDB 客户端似乎也会尝试检索主键属性(我想避免)并给我一个异常Unable to locate property for key attribute <PK hash key attribute name>。这是我用来查询的代码

var keyExpression = new Expression
{
    ExpressionStatement = $"GSI_PK = :pkValue", 
    ExpressionAttributeValues =
    {
        [":pkValue"] = 1
    }
};

db.FromQueryAsync<MyItem>(new QueryOperationConfig
{
    IndexName = "MyIndex",
    KeyExpression = keyExpression,
    Select = SelectValues.SpecificAttributes,
    AttributesToGet = new List<string> { "Number", "Name" }
}

有没有办法阻止 DynamoDB 客户端映射非请求项目?

4

0 回答 0