在服务器上添加“Or”子句以进行breeze查询

时间:2013-02-07 17:57:59

标签: breeze single-page-application devforce

因此,我们希望能够通过电话号码搜索某个人。从this SO帖子我收集到,通过导航属性添加一个where子句是一个列表在微风中不起作用。

这对我来说没关系,因为breeze提供了一种很棒的方式server side properties。但是,当我在服务器上编写查询时,我需要将额外的where子句作为“OR”添加到查询中,这样就不会干扰我已经在客户端上的where子句。我在服务器上这样做,但它不工作。 (注意这是使用DevForce Predicate Builder):

var pred = PredicateBuilder.False<Person>();
pred.Or(x => x.PhoneNumbers.Any(y => y.Value.StartsWith(searchString)));
var qry = _contextProvider.Context.People.Where(pred);

我是否构建了错误的谓词,或者我正在做什么被添加为“和”条款,从而干扰了我在客户端的其他条款?

1 个答案:

答案 0 :(得分:2)

更新后的帖子:2013年11月25日

从Breeze 1.4.6开始,现在支持“任何”和“所有”运算符。

所以你的客户端Breeze查询看起来像:

var query = EntityQuery.from("People").where("PhoneNumbers", "any", "Value", "startsWith", searchString);

这假设您有一个“People”端点,它返回一个具有“PhoneNumbers”属性的person对象,该属性又具有自己的“Value”属性。

另见:http://www.breezejs.com/documentation/query-examples

旧帖子

Breeze确实支持或联合谓词,如:

 var pred = Predicate.create("ShipCity", "stArtsWiTH", "F")
                         .or("ShipCity", "startswith", "C");
 var q = EntityQuery.from("Orders").where(pred);

尚未支持的是“任何”和“所有”运营商。虽然这些将在不久的将来得到支持。