【发布时间】:2013-06-20 02:36:28
【问题描述】:
我将 Breeze 用于 SPA 应用程序。后端数据来自访问 API(不是 EF)。
我将“任务”公开为一个可查询的集合。
在某些情况下,我想按 ID 请求单个任务。 OData 过滤器将被发送到服务器,但随后 Breeze 将必须查询数据库中的所有任务,然后应用过滤器。
有没有办法拦截 OData 过滤器,然后自己获取请求的单个记录?
谢谢
【问题讨论】:
标签: asp.net-mvc-4 odata breeze
我将 Breeze 用于 SPA 应用程序。后端数据来自访问 API(不是 EF)。
我将“任务”公开为一个可查询的集合。
在某些情况下,我想按 ID 请求单个任务。 OData 过滤器将被发送到服务器,但随后 Breeze 将必须查询数据库中的所有任务,然后应用过滤器。
有没有办法拦截 OData 过滤器,然后自己获取请求的单个记录?
谢谢
【问题讨论】:
标签: asp.net-mvc-4 odata breeze
您可以使用 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 子句混合搭配。 p>
希望这会有所帮助。
【讨论】: