在DynamoDB中,当设置了极限属性时,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<T>。从QueryResponse中,我知道可以得到LastEvaluatedKey,但是这个委托如何返回最后一个评估键?有可能吗?
发布于 2016-06-26 23:57:34
在PocoDynamo中,当使用返回IEnumerable<T>的查询或扫描API的时,即:
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>中。
https://stackoverflow.com/questions/38043871
复制相似问题