只是为了清除,默认情况下,Breeze中的所有查询都是在服务器上独占执行的。 (您可以查询本地查询缓存,但我不认为这是您询问的问题。)您可以控制的是要执行的查询表达式是在服务器上独占定义的还是基于在服务器以及额外的客户端限制。
如果您想在服务器上定义一个返回单个记录的查询,您当然可以这样做。这将是这个样子:
[HttpGet]
public Car Car17()
{
return _contextProvider.Context.Cars.First(c => c.CarId == 17);
}
这可以从客户端通过以下方式查询:
var q = EntityQuery.from("Car17");
另外,您可以使用查询参数:
[HttpGet]
public Car CarById(carId)
{
return _contextProvider.Context.Cars.First(c => c.CarId == carId);
}
为其查询看起来像这样:
var q = EntityQuery.from("CarById").withParameters({ carId: 17});
或者你可以做这样的事情:
[HttpGet]
public IQueryable AllCars()
{
return _contextProvider.Context.Cars;
}
为其查询应该是这样的:
var q = EntityQuery.from("AllCars").where("CarId", "==", 17);
重要的是要清楚的是,这些的所有3个执行完全在服务器上进行相同的查询并返回完全相同的结果。
希望这会有所帮助。