如何使用DynamoDBContext批量处理结果

时间:2012-10-05 13:55:04

标签: .net amazon-web-services amazon-dynamodb

我正在使用DynamoDB .NET对象持久性模型来扫描具有以下条件的表。

public IEnumerable<Product> GetProducts(string attribute1Value, string attribute2Value
{
    IEnumerable<Product> products = null;
    try
    {
        RegionEndpoint region = RegionEndpoint.GetBySystemName("us-east-1");
        AmazonDynamoDB client = new AmazonDynamoDBClient(account.AwsAccessKey, account.AwsSecretKey, region);

        DynamoDBContext context = new DynamoDBContext(client);
        products = context.Scan<Product>(
            new ScanCondition("attribute1", ScanOperator.Equal, attribute1Value),
            new ScanCondition("attribute2", ScanOperator.Equal, attribute2Value));

    }
    catch (AmazonServiceException ase)
    {
        log.Error("Amazon Service Exception, Message: " + ase.Message + ", request id: " + ase.RequestId);
    }
    catch (Exception e)
    {
        log.Error("Exception: " + e.Message);
    }
    return products;
}

当我使用DynamoDBContext时,当DynamoDB超过1 MB限制时,如何处理输出? 感谢

1 个答案:

答案 0 :(得分:4)

如果达到1MB限制,DynamoDB将返回多页项目。 DynamoDBContext.Scan操作将自动分页结果集(延迟加载)。因此,从您的角度来看,没有什么需要做的,只需枚举IEnumerable对象,就会返回所有匹配的项目。