我正在将 Breeze 用于 SPA 应用程序。后端数据来自访问 API(不是 EF)。
我将“任务”公开为一个可查询的集合。
在某些情况下,我想按 Id 请求单个任务。OData 过滤器将被发送到服务器,但随后 Breeze 将必须查询数据库中的所有任务,然后应用过滤器。
有没有办法拦截 OData 过滤器,然后自己获取请求的单个记录?
谢谢
我正在将 Breeze 用于 SPA 应用程序。后端数据来自访问 API(不是 EF)。
我将“任务”公开为一个可查询的集合。
在某些情况下,我想按 Id 请求单个任务。OData 过滤器将被发送到服务器,但随后 Breeze 将必须查询数据库中的所有任务,然后应用过滤器。
有没有办法拦截 OData 过滤器,然后自己获取请求的单个记录?
谢谢
您可以使用 Breeze EntityQuery.withParameters方法。
// Client
var query = new EntityQuery("GetTaskById").withParameters( { "taskId": 126 });
myEntityManager.executeQuery(query).then(...)
// Server
[HttpGet]
public Task GetTaskById(int taskId) {
// your task code.
}
请注意,您可以返回标量结果或 IQueryable,这意味着您还可以将EntityQuery.where子句与EntityQuery.withParameter子句混合和匹配。
希望这可以帮助。