OrmLite db.Select 没有 return 响应
OrmLite db.Select not return response
我在项目中使用 Servietack 和 OrmLite。发送请求(Db.Select)时,过了很久,没有响应return.
public object Get(GetCategoryNews request)
{
var PageCount = 20;
var skip = (request.Page.GetValueOrDefault(1) - 1) * PageCount;
var cacheKey = UrnId.Create<GetCategoryNews>(DateTime.Now.ToString("yyMMddhhmm") + skip);
return base.Request.ToOptimizedResultUsingCache(base.Cache, cacheKey, () =>
{
//On this line, waiting and no response
var status = Db.Select<News>().Skip(skip).Take(PageCount).Select(o => new NewsResponse() {
Id = o.Id,
CreateOn = o.CreateOn,
Description = o.Description,
PublishOn = o.PubDate,
Title = o.Title
});
return status;
});
}
但是当计数请求时,它工作得很好
var count = Db.Count<News>();
我该如何解决这个问题?
调用 Db.Select<News>()
return 的 List<News>
会将整个 table 结果下载到内存列表集合中。由于您正在尝试对结果集进行分页,因此您需要构建一个 SqlExpression
OrmLite 只执行 return 您感兴趣的结果,例如:
//Create SQL Query
var q = db.From<News>()
.Skip(skip)
.Take(PageCount);
var results = db.Select(q); //Executes paged query
return results.Select(o => new NewsResponse {
Id = o.Id,
CreateOn = o.CreateOn,
Description = o.Description,
PublishOn = o.PubDate,
Title = o.Title
});
我在项目中使用 Servietack 和 OrmLite。发送请求(Db.Select)时,过了很久,没有响应return.
public object Get(GetCategoryNews request)
{
var PageCount = 20;
var skip = (request.Page.GetValueOrDefault(1) - 1) * PageCount;
var cacheKey = UrnId.Create<GetCategoryNews>(DateTime.Now.ToString("yyMMddhhmm") + skip);
return base.Request.ToOptimizedResultUsingCache(base.Cache, cacheKey, () =>
{
//On this line, waiting and no response
var status = Db.Select<News>().Skip(skip).Take(PageCount).Select(o => new NewsResponse() {
Id = o.Id,
CreateOn = o.CreateOn,
Description = o.Description,
PublishOn = o.PubDate,
Title = o.Title
});
return status;
});
}
但是当计数请求时,它工作得很好
var count = Db.Count<News>();
我该如何解决这个问题?
调用 Db.Select<News>()
return 的 List<News>
会将整个 table 结果下载到内存列表集合中。由于您正在尝试对结果集进行分页,因此您需要构建一个 SqlExpression
OrmLite 只执行 return 您感兴趣的结果,例如:
//Create SQL Query
var q = db.From<News>()
.Skip(skip)
.Take(PageCount);
var results = db.Select(q); //Executes paged query
return results.Select(o => new NewsResponse {
Id = o.Id,
CreateOn = o.CreateOn,
Description = o.Description,
PublishOn = o.PubDate,
Title = o.Title
});