使用Breeze 1.3.5
在“orders for Chai”示例后,我尝试形成类似的查询。但是,我发现当resourceName包含“?”时,未正确添加其他OData参数。例如,如果我执行以下操作:
var query = new breeze.EntityQuery('Products/?categoryId=1234')
.top(10);
它发送一个如下所示的请求:
http://domain/controller/Products/?categoryId=1234?$top=10
? $ top应& $ top
由于使用了'?'而不是'& ',我的上下文控制器会显示一个明显无效的categoryId,如下所示:
1234?$top=10
我做错了什么或者这只是一个缺陷?任何想法或变通方法将不胜感激!谢谢!
答案 0 :(得分:0)
对于Breeze, resourceName (EntityQuery中'from'子句的值)是 DataService.serviceName 之后和“?”之前的所有内容。
正如您所发现的,您可以通过 EntityQuery.withParameters 方法传递任何参数(即在?之后的内容)。 EntityQuery的'where','top','skip','select','expand'等子句也作为参数传递。
这完全是设计的,不应该是任何无法使用这些规则构建的网址。
总结一下,一个微风查询网址看起来像
{serviceName} / {resourceName}?{参数 - 以'&'}分隔
其中
{serviceName}: DataService.serviceName
{resourceName}: value of EntityQuery.from clause
{parameters}: serialized and & delimited value of the rest of the EntityQuery including any withParameter values.