AWS DynamoDB如何从多个表中检索数据使用CreateMultiTableBatchGet没有范围键



我试图从dynamoDB多个表中检索数据,在每个表中,我有哈希键和范围键,但我只是有哈希键,所以没有范围键它不起作用,它抱怨像范围键丢失。

var batchGets = new List<Amazon.DynamoDBv2.DataModel.BatchGet>();
public void SetBatchGet<T>(T entity)
{
var batch = context.CreateBatchGet<T>(null);
batch.AddKey(entity);         /// ERROR : Range key missing 
batchGets.Add(batch);
}
public async Task<List<object>> CreateMultiTableBatchGet(DynamoDBOperationConfig dynamoDBOperationConfig = null)
{
try
{

var result = context.CreateMultiTableBatchGet(batchGets.ToArray());
await result.ExecuteAsync();
batchGets = new List<Amazon.DynamoDBv2.DataModel.BatchGet>();
return null;
}
catch (System.Exception ex)
{
batchGets = new List<Amazon.DynamoDBv2.DataModel.BatchGet>();
throw ex;
}
}

// Caller
var pr = new Participant();
pr.Code = Code;  // Just passing hash key.
_repo.SetBatchGet(pr);
_repo.CreateMultiTableBatchGet();

如何使多表工作没有范围键。

对于BatchGetItems,您必须提供完整的主键,散列(分区)和范围(排序)键。如果范围键未知,则需要使用Query请求,其中只需要提供散列键。然而,没有BatchQueryItems这种东西。

最接近的是PartiQL APIExecuteStatement,您可以在其中欺骗"batchquery";使用IN操作符:

SELECT * FROM mytable WHERE pk IN [1,2,3]

最新更新