1

我正在尝试在具有“withParamters”的查询中使用 executeQueryLocally,但似乎即使在“withParameters”中使用新值时我也会获得本地缓存的数据。就好像“executeQueryLocally”忽略了“withParameters”中的值。

这是客户端的代码:

var query = EntityQuery.from('ProductsFilteredByCategory')
            .withParameters({ categoryId: categoryId })
            .select("productId,name,desc,shopPrice,webPrice")
            .orderBy('name');

var p = manager.executeQueryLocally(query);
if (p.length > 5) {
    productsObservable(p);
    return Q.resolve();
}

这是服务器端“ProductsFilteredByCategory”的代码:

    [HttpGet]
    public IQueryable<Product> ProductsFilteredByCategory(int categoryId)
    {
        Category category = _contextProvider.Context.Categories.Include("Products").Include("SubCategories").First(c => c.CategoryId == categoryId);
        var prods = from p in category.Products select p;
        category.SubCategories.ForEach(sc => prods = prods.Concat(_contextProvider.Context.Categories.Include("Products").First(c => c.CategoryId == sc.CategoryId).Products));
        return prods.AsQueryable();
     }

发生的情况是,在“p.length > 5”为真的情况下检索一次数据后,即使“categoryId”不同,在每个后续调用中,“p.length > 5”仍然为真,因此绑定到的数据observable 被加载一次并且永远不会改变。

谢谢你的帮助 !

埃利尔

4

1 回答 1

1

EntityQuery.withParameters方法不适用于本地查询。(我们可能应该更好地记录这一点)。

WithParameters发送只能在服务器上解释的应用程序域特定参数。与 'where'、'orderBy'、'take' 等不同, withParameters调用无法确定全局解释。它只能在接受参数的服务器端方法的上下文中理解。

于 2013-06-20T18:00:16.700 回答