![](/img/trans.png)
[英]when i use ServiceStack.OrmLite.SqlServer Db.Select<TableA> sometimes Result is TableB's rows or TableA's other rows
[英]OrmLite db.Select not return response
我在我們的項目中使用Servietack和OrmLite。 發送請求(Db.Select)后,經過很長時間,沒有響應返回。
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>()
返回一個List<News>
,它將整個表結果下載到內存列表集合中。 由於您嘗試分頁結果集,因此需要構建一個SqlExpression
可執行的SqlExpression
,以僅返回您感興趣的結果,例如:
//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
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.