ServiceStack. Поддерживает ли "последний оцененный ключ" на DynamoDB?

В DynamoDB, когда свойство limit установлено, DynamoDB будет возвращать "последний оцененный ключ", который используется для разбивки на страницы (см. Здесь)

Я хочу знать, поддерживает ли ServiceStack.Aws эту функцию (для версии.NET C#), или мне нужно напрямую использовать клиент AWSSDK

Спасибо

РЕДАКТИРОВАТЬ: Я хочу реализовать нумерацию на стороне сервера. Как этого добиться, используя PocoDynamo? Мой код выглядит так

public IList<Company> GetCompanies(string shortName, ref string lastKeyEvaluated)
{
   IList<Company> data = null;
   using (AmazonDynamoDBClient awsDynamoDbClient = new AmazonDynamoDBClient())
   {
      IPocoDynamo dbDynamo = new PocoDynamo(awsDynamoDbClient);
      var queryExpression = dbDynamo.FromQuery<Company>(c => c.ShortName == shortName);
      data = dbDynamo.Query(queryExpression, 10); //How can i pass lastEvaluatedKey?
      var awsdkClient = dbDynamo.DynamoDb; //Can i get last evaluated key from original AWSDK client?
   }
   return data;
}

РЕДАКТИРОВАТЬ 2: В некоторых ответах они сказали мне, что мне нужно использовать параметр делегата. Но, похоже, что этот делегат ожидает объект QueryResponse и возвращает IEnumerable. Из QueryResponse я знаю, что я могу получить LastEvaluatedKey, но как этот делегат может вернуть последний оцененный ключ? Это можно сделать?

Спасибо

Спасибо

1 ответ

В PocoDynamo, когда вы используете API запросов или сканирования, которые возвращают IEnumerable<T>т.е.

public interface IPocoDynamo
{
    //...
    IEnumerable<T> ScanAll<T>();
    IEnumerable<T> Scan<T>(ScanRequest request, Func<ScanResponse, IEnumerable<T>> fn);
    IEnumerable<T> Scan<T>(ScanExpression<T> request);
    IEnumerable<T> Query<T>(QueryExpression<T> request);
    IEnumerable<T> Query<T>(QueryRequest request);
    IEnumerable<T> Query<T>(QueryRequest request, Func<QueryResponse, IEnumerable<T>> fn);
}

PocoDynamo возвращает ленивую последовательность, которая прозрачно отправляет несколько постраничных запросов, чтобы получить столько результатов, сколько необходимо, используя LastEvaluatedKey Ответ, чтобы получить следующую страницу результатов.

Для API, которые принимают лимит и возвращают конкретный List<T> результаты все еще используют LastEvaluatedKey чтобы получить результаты, но они вместо этого охотно извлекаются в бетон List<T> до возвращения

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