2014-02-11 89 views
1

我正嘗試創建分頁掃描請求,但我不確定如何開始。分頁的DynamoDB掃描/查詢.Net

我有我的桌子和DTO的表像這樣

[DynamoDBTable("ProfileMetrics")] 
public class ProfileMetricsDTO 
{ 
    [DynamoDBHashKey] 
    public string ProfileId { get; set; } 

    [DynamoDBRangeKey] 
    public string Key { get; set; } 
} 

現在,我想找到有,比方說,「My_Key」一鍵全部ProfileMetrics。而且由於可能會有很多我需要分頁的結果。我看了一下LastEvaluatedKey和ExclusiveStartKey,但我看不出如何提供這些,當我嘗試做一個掃描,像這樣:

IEnumerable<ProfileMetricsDTO> results = context.Scan<ProfileMetricsDTO>(new ScanCondition("Key", ScanOperator.Equal, "My_Key")); 

如何限制的結果,並提供尋呼?

回答

0

看起來你可以通過在ScanRequest設置ExclusiveStartKey做到這一點:

// Create Scan request 
ScanRequest request = new ScanRequest 
{ 
    TableName = "SampleTable", 
    ExclusiveStartKey = startKey, 
    ScanFilter = conditions 
}; 

看到這裏的例子:http://aws-sdk-v2-preview-docs.s3-website-us-east-1.amazonaws.com/items/T_Amazon_DynamoDBv2_Model_ScanRequest_NET3_5.html

+1

您還可以使用ExclusiveStartKey並用QueryRequest的限制。查詢可能更適合某些事情,因爲Scans讀取整個表格 - 從而導致更高的成本。 – Ben

0

在仔細閱讀文檔後,看起來好像不太可能。

0

我才發現,你可以使用像

context.FromScan<T>(new ScanOperationConfig 
{ 
    Limit = 10, 
    Filter = ... 
}); 

FromQueryFromQueryAsyncFromScan,在上下文FromScanAsync