1

I have a DynamoDB table with GSI and I need to use AWS .NET SDK to retrieve two specific attributes, preferably using the persistence model. I've created a separate class for this projection like this

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

    public string Name{ get; set; }
}

but even when I specify SelectValues.SpecificAttributes to get only these attributes, it seems that DynamoDB client tries to retrieve primary key attributes (which I would like to avoid) and gives me an exception Unable to locate property for key attribute <PK hash key attribute name>. Here is the code I use to query

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" }
}

Is there a way to stop DynamoDB client from mapping non-requested items?

Demarsch
  • 1,419
  • 19
  • 39

0 Answers0