Разбиение на страницы DynamoDB /Query .Net
Я пытаюсь создать постраничный запрос на сканирование, но не знаю, с чего начать.
У меня есть свой стол и DTO для стола, как это так
[DynamoDBTable("ProfileMetrics")]
public class ProfileMetricsDTO
{
[DynamoDBHashKey]
public string ProfileId { get; set; }
[DynamoDBRangeKey]
public string Key { get; set; }
}
Теперь я хочу найти все ProfileMetrics, которые имеют ключ, скажем, "My_Key". И так как их, вероятно, будет много, мне нужно разбить результаты на страницы. Я читал о LastEvaluatedKey и ExclusiveStartKey, но я не вижу, как предоставить их, когда я пытаюсь выполнить сканирование следующим образом:
IEnumerable<ProfileMetricsDTO> results = context.Scan<ProfileMetricsDTO>(new ScanCondition("Key", ScanOperator.Equal, "My_Key"));
Как я могу ограничить результаты и обеспечить пейджинг?
4 ответа
Похоже, вы можете сделать это, установив ExclusiveStartKey в ScanRequest:
// 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
Я только что нашел, вы можете использовать что-то вроде
context.FromScan<T>(new ScanOperationConfig
{
Limit = 10,
Filter = ...
});
Есть FromQuery
, FromQueryAsync
, FromScan
, FromScanAsync
в контексте.
Существует очень хорошая документация о том, как именно это сделать. Документация включает в себя множество примеров кода.
Я запустил и запустил мое приложение, следуя этой документации.
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LowLevelDotNetScanning.html
После более тщательного прочтения документации кажется, что это невозможно.