我有一个返回项目计数的复杂查询。如果我在客户端上运行查询,它是否总是返回对象,或者有没有办法只返回项目计数而不在有效负载中发送对象数组?我试着做类似的事情
var query = breeze.EntityQuery.from('Items').inlineCount(true);
但这仍然会拉低所有记录。有什么解决办法吗?
我有一个返回项目计数的复杂查询。如果我在客户端上运行查询,它是否总是返回对象,或者有没有办法只返回项目计数而不在有效负载中发送对象数组?我试着做类似的事情
var query = breeze.EntityQuery.from('Items').inlineCount(true);
但这仍然会拉低所有记录。有什么解决办法吗?
我不知道这是否能准确回答您的问题,但您需要查询记录才能知道有多少记录(据我所知,可能有一种更有效的方法可以将 Breeze 直接绑定到 SQL 命令中,即在我的头上)所以你可以做类似的事情 -
var query = breeze.EntityQuery.from('Items')
.take(0)
.inlineCount(true);
编辑了答案 - 这将不返回任何对象并简单地获取计数。
已经提供的 inlineCount 答案是绝对正确的。
另一种选择是计算服务器上的计数并发送“摘要”。例如,此服务器端控制器方法将向客户端返回一个包含两个元素对象的数组:
[HttpGet]
public Object CustomerCountsByCountry() {
return ContextProvider.Context.Customers.GroupBy(c => c.Country).Select(g => new {g.Key, Count = g.Count()});
}
这将通过调用
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
});
});
var 查询 = 微风.EntityQuery.from('Items') .take(0) .inlineCount(true);