Разбиение на страницы 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

После более тщательного прочтения документации кажется, что это невозможно.

Другие вопросы по тегам