0

デュランダルとブリーズを習得中です。そして、nerddinner の SPA バージョンを作成することを選択しました。

実行する必要がある最初のクエリは次のとおりです。

 public IEnumerable<JsonDinner> GetMostPopularDinners(int limit = 10)
    {
       var mostPopularDinners = from dinner in _db.Context.Dinners.Include("RSVPs")
                                where dinner.EventDate >= DateTime.Now
                                orderby dinner.RSVPs.Count descending
                                select dinner;

        if (limit > 50 || limit <= 0)
            limit = 10;

        return mostPopularDinners.Take(limit).AsEnumerable().Select(JsonDinnerFromDinner);
    }

私は簡単に書き始めましたが、この行「orderby dinner.RSVPs.Count decending」に問題があります。これは私がこれまでに持っているものです。

var getMostPopularDinners = function() {
        var query = EntityQuery
            .from('dinners')
            .where('eventDate', '>=', new Date(Date.now()))
            .orderByDesc('RSVPs')
            .expand('RSVPs');
4

1 に答える 1

1

申し訳ありませんが、Breeze は集計値 (この場合は「カウント」) での並べ替えやフィルタリングをまだサポートしていません。

できることは、これを名前付きクエリに変えることです。(十分に文書化されていません...)基本的に、これにはEntityQuery.withParametersメソッドを使用して、追加のパラメーターを任意のサービスメソッドに渡すことが含まれます。したがって、パラメータを渡し、Breeze の IQueryable サポートを引き続き使用する、次のようなクエリを作成できます。

EntityQuery.from("GetMostPopularDinners")
             .withParameters({ EventDate: new Date(Date(now()) })
             .take(10);

コントローラーメソッドは次のようになります。

[HttpGet]
public IQueryable<Dinner> GetMostPopularDinners(DateTime eventDate) {
      return _db.Context.Dinners.
         .Where(dinner => dinner.EventDate >= eventDate)
         .OrderByDescending(dinner => dinner.RSVPs.Count);
}

そして ... JsonDinnerFromDinner" 呼び出しを行う必要はありません。Breeze はこれを自動的に処理します。

于 2013-09-16T23:05:25.423 に答える