首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServiceStack.Aws支持DynamoDB上的“最后评估键”?

ServiceStack.Aws支持DynamoDB上的“最后评估键”?
EN

Stack Overflow用户
提问于 2016-06-26 22:43:44
回答 1查看 569关注 0票数 1

在DynamoDB中,当设置了极限属性时,DynamoDB将返回一个用于分页的“最后计算的键”(参见这里)。

我想知道ServiceStack.Aws是否支持这个特性(对于.NET c#版本),或者我是否需要直接使用AWSSDK客户机。

编辑

我想实现服务器端分页。如何实现这个使用PocoDynamo?我的代码如下所示

代码语言:javascript
复制
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<T>。从QueryResponse中,我知道可以得到LastEvaluatedKey,但是这个委托如何返回最后一个评估键?有可能吗?

EN

回答 1

Stack Overflow用户

发布于 2016-06-26 23:57:34

PocoDynamo中,当使用返回IEnumerable<T>查询或扫描API的时,即:

代码语言:javascript
复制
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响应获取下一页结果。

对于接受限制并返回具体List<T>的API,结果仍然使用LastEvaluatedKey来获取结果,但结果在返回之前被急切地导入到具体的List<T>中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38043871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档