我正在尝试在具有“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 被加载一次并且永远不会改变。
谢谢你的帮助 !
埃利尔