如何使用RIA Services QueryBuilder <t> </t>

时间:2011-09-15 11:06:02

标签: silverlight ria query-builder

根据QueryBuilder的参数列表,T对象的EntityQuery是查询整形的候选对象。但是,我这样做的尝试都没有成功。我想知道是否有人知道如何在EntityQuery of T上使用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 Services 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的经验?

2 个答案:

答案 0 :(得分:0)

我意识到自己的错误。 QueryBuilder的ApplyTo方法不会改变原始的EntityQuery,而是返回一个新的。因此,我需要做的就是将QueryBuilder返回的EntityQuery加载到DomainContext的Load方法中。

答案 1 :(得分:0)

lo.Completed += (s, e) => 
{     
    foreach(CustomEntity item in lo.Entities)
    {
      list.add(item);
    }
 };