Rik*_*löf 5 c# amazon nosql amazon-dynamodb
我正在使用带有C#驱动程序的dynamoDB,我有一个用户表.该表具有以下两个主键:
然后我尝试在上下文中使用Load方法加载User,如下所示:
_dynamoDBClient.Context.Load<User>(12345);
Run Code Online (Sandbox Code Playgroud)
然后我得到以下例外:
"exceptionMessage":"无法转换属性Created的范围键值","exceptionType":"System.InvalidOperationException"
如果我加载特定的范围键,如:
_dynamoDBClient.Context.Load<User>(12345, "2015-01-01");
Run Code Online (Sandbox Code Playgroud)
一切都好.
是否有办法只使用主哈希键加载一个键入的用户,即使该表有一个范围键?我不希望每次需要获取用户时都发送创建日期.或者我是否想过了解dynamoDB中范围键的概念?
该Load方法用于从表中检索单个项目,因此您需要提供整个主键.
在幕后,该Load方法实际上GetItem从本机AWS DynamoDB API 调用该操作,该API对于需要提供的属性具有以下要求:
对于主键,您必须提供所有属性.例如,使用哈希类型主键,您只需要提供哈希属性.对于散列和范围类型主键,您必须同时提供散列属性和范围属性.
资料来源:http: //docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html
如果表的主键由Hash和Range Key组成,则必须提供两者以匹配单个项.
现在,当涉及到您的数据模型时,Range Key用于对通常一起检索的相关记录进行分组.在您的情况下,我假设有其他用户具有相同UserId但具有不同的创建日期.如果您不需要将用户组合在一起(并按创建日期排序),那么仅使用哈希密钥就足够了.
这两个帖子可能会帮助您确定适用于不同场景的正确密钥类型:
在dynamodb表中使用Hash范围有什么用? 在dynamodb表中使用Hash范围有什么用?
什么时候用什么PK型? DynamoDB:何时使用什么PK类型?
| 归档时间: |
|
| 查看次数: |
3377 次 |
| 最近记录: |