1

そのため、電話番号で人を検索できるようにしたいと考えています。このSO 投稿から、リストであるナビゲーション プロパティを介して where 句を追加しても、まだ簡単に機能しないことがわかります。

ブリーズはサーバー側のプロパティを実行する素晴らしい方法を提供するので、それは私には問題ありません。ただし、サーバーでクエリを作成するときは、クエリに「OR」として追加の where 句を追加する必要があるため、クライアントに既にある 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);

述語を間違って作成していますか、それとも「And」句として追加されているため、クライアントからの他の where 句に干渉していますか?

4

1 に答える 1

2

更新された投稿: 11/25/13

Breeze 1.4.6 の時点で、'any' および 'all' 演算子がサポートされるようになりました。

したがって、クライアント側の Breeze クエリは次のようになります。

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

これは、独自の「Value」プロパティを持つ「PhoneNumbers」プロパティを持つ人物オブジェクトを返す「People」エンドポイントがあることを前提としています。

参照: 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);

ブリーズがまだサポートしていないのは、'any' および 'all' 演算子です。ただし、これらは近い将来サポートされる予定です。

于 2013-02-07T20:19:56.513 に答える