我有一个轻微的查询,当从服务器查询时忽略谓词。返回所有数据。之后,如果我在本地包含相同的谓词和查询,则应用谓词。这是正常的吗? 我的谓词和查询看起来像
var predicate = breeze.Predicate(“active”,“==”,false) var query = new EntityQuery(“Todos”)。where(predicate);
发送到服务器的网址类似于http://localhost:8888/Items/GetItems?$filter=active%20eq%20false
,方法看起来像
[HttpGet]
public IQuerable<Items> GetItems() {
return contextprovider.context.Items();
}
是否可以直接从服务器过滤而不必加载所有并在本地过滤?
答案 0 :(得分:1)
此IS直接在服务器上过滤。 &#39; active = false&#39;子句在服务器端数据存储区执行之前合并到服务器端IQueryable。因此,只要数据存储区了解如何处理IQueryable(如同EF所做的那样),所有过滤都发生在服务器上的“组合”的上下文中。查询。您所做的只是将过滤条件传递给服务器,服务器将与命名端点一起执行。因此,在服务器上执行的查询实际上是
contextProvider.context.Items().Where(item => item.active = false);
或者你可以随时避免通过&#39;在过滤条件中,只需更改服务器端点实现即可明确执行过滤,即
[HttpGet]
public IQuerable<Items> GetItems() {
return contextprovider.context.Items().Where(item => item.active = false);
}
在这两种情况下,都将执行完全相同的查询。
答案 1 :(得分:1)
我错过了控制器上的[BreezeController]
标记。