我有一个带有 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 客户端映射非请求项目?