0

QueryBuilderのパラメータリストによると、TオブジェクトのEntityQueryはクエリシェーピングの候補です。しかし、私の試みは成功していません。クライアントでフィルタリングするためにTのEntityQueryでApplyToメソッドを使用する方法を誰かが知っているかどうか疑問に思っていますか?

これは私がこれまでに持っているものです:

次のスニペットは、特定のデータベーステーブル内に格納されているすべてのカスタムエンティティを返すことに成功しています。

var ctx = new CustomDomainContext();
var query = ctx.GetAllCustomEntitiesQuery();

var lo = ctx.Load<CustomEntity>(query);
lo.Completed += (s, e) =>
{
    var result = lo.Entities.ToList();
};

次のスニペットは、RIAサービスQueryBuilderを使用して結果を区切るために、上記で使用されたクエリを形成しようとします。残念ながら、すべてのデータはまだ返されます。

var ctx = new CustomDomainContext();
var query = ctx.GetAllCustomEntitiesQuery();

var builder = new QueryBuilder<CustomEntity>();
builder.Where(c => c.Id == 1);
builder.ApplyTo(query);

var lo = ctx.Load<CustomEntity>(query);
lo.Completed += (s, e) =>
{
    var result = lo.Entities.ToList(); --> Still returns all entities!
};

間違いなく、QueryBuilderを誤って使用しています。誰かがQueryBuilderをTのEntityQueryに適用した経験がありますか?

4

2 に答える 2

0

私は自分の誤りに気づきました。QueryBuilderのApplyToメソッドは、元のEntityQueryを変更せず、代わりに新しいEntityQueryを返します。したがって、私がする必要があるのは、QueryBuilderから返されたEntityQueryをDomainContextのLoadメソッドにロードすることだけでした。

于 2011-09-16T02:56:08.613 に答える
0
lo.Completed += (s, e) => 
{     
    foreach(CustomEntity item in lo.Entities)
    {
      list.add(item);
    }
 }; 
于 2011-09-19T12:32:12.563 に答える