计算在Breeze.js

Ali*_*i B 5 c# entity-framework asp.net-web-api breeze

我有一个返回项目计数的复杂查询.如果我在客户端上运行查询,它是否总是返回对象,或者有没有办法只返回项目计数而不在有效负载中发送对象数组?我试过做类似的事情

var query = breeze.EntityQuery.from('Items').inlineCount(true);
Run Code Online (Sandbox Code Playgroud)

但这仍然会拉低所有记录.有解决方案吗

PW *_*Kad 8

我不知道这是否完全回答了你的问题,但是你需要查询记录才能知道有多少(据我所知,可能有一种更有效的方法将Breeze直接绑定到一个SQL命令,即我头上的方式)所以你可以做一些像 -

var query = breeze.EntityQuery.from('Items')
    .take(0)
    .inlineCount(true);
Run Code Online (Sandbox Code Playgroud)

编辑答案 - 这将不返回任何对象,只是得到计数.


Jay*_*and 6

已提供的inlineCount答案绝对正确.

另一种方法是计算服务器上的计数,然后发送"摘要".例如,此服务器端控制器方法将向客户端返回两个元素对象的数组:

  [HttpGet]
  public Object CustomerCountsByCountry() {
    return ContextProvider.Context.Customers.GroupBy(c => c.Country).Select(g => new {g.Key, Count = g.Count()});
  }
Run Code Online (Sandbox Code Playgroud)

这将通过调用

  EntityQuery.from("CustomerCountsByCountry")
     .using(myEntityManager).execute()
     .then(function(data) {

     var results = data.results;
     results.forEach(function(r) {
       var country = r.Key;
       var count = r.Count
     });

  });
Run Code Online (Sandbox Code Playgroud)