2017-04-22 3 views
1

私はこのプロジェクトでServietackとOrmLiteを使用しています。要求(Db.Select)が送信されると、多くの時間が経過しても応答が返されません。OrmLite db.Select not return response

 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>(); 

を動作しますか?

答えて

2

Db.Select<News>()を呼び出すとList<News>が返され、テーブル結果全体がメモリリストコレクションにダウンロードされます。あなたがページにあなたの代わりにOrmLiteがに実行SqlExpressionを構築するために必要なResultSetをしようとしているだけなので、あなたが興味を持っている結果、例えば返す:男

//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 
}); 
+0

おかげで、どのように私はのために、ネストされたオブジェクトに問い合わせることができます例= var q = Db。() .Where(o => o.Feed.Category.CategoryId == 10); – AmirHossein

+0

@AmirHosseinコメントにコードを入れないでください。新しい質問をすることができますか? – mythz

+0

私は私の答えを見つけましたhttp://stackoverflow.com/questions/8616516 – AmirHossein