簡體   English   中英

OrmLite db.Select不返回響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM