当与OData一起使用Breeze并调用entityManager.FetchEntityByKey()时,将发送以下请求:
/odata/Customers?$filter=Id eq 2我本以为
/odata/Customers(2)是否有可能用后一种方法来制造微风呢?
更新2013年-12-10:
是!我已经知道我可以做以下工作(imho FetchEntityByKey应该这样做):
entityManager.executeQuery('Cusotmer(2)') ...然后发出下列请求:
/odata/Customers(2)但!现在看来,Breeze (v1.9.6)不能正确处理结果。返回的结果数组为空。实际上,它应该只返回一个项(实体),而不是一个数组。
链接到UserVoice
我创建了一个UserVoice反馈
发布于 2013-12-14 08:51:17
你真的关心微风生成的url是/odata/Customers(2)还是/odata/Customers?$filter=Id eq 2?为什么?
它们都是合法的OData。OData服务器将很高兴地对这两个查询给出正确的答案。
微风确实偏爱后者。这就是为什么。
Customers(2)语法返回一个对象或空(不是404-unfound)。
Customers?$filter=Id eq 2筛选器语法总是返回一个数组。数组有一个项或零项。但你会得到一个数组。
我们对客户端的简化之一是,查询总是返回data.results数组。我们有一个查询结果API,不管您如何查询,data.results始终是一个数组。您不必测试data.results是否为null。您不必记住“我的查询是返回对象还是数组?”
这就是我们指导客户端一致性的原则。我们不太可能偏离这个原则。
碰巧,您可以拦截URL生成,如果愿意,可以更改它。这对你来说是个练习。当然(正如您所发现的),您必须做一些工作才能将结果转换为数组。忽略这一点是因为我怀疑您试图将Breeze骗到其他语法Customers(2)导致了令人困惑的空数组结果。
我们不太可能改变默认的行为,除非我们得到一些强有力的理由支持的严重倒退。
https://stackoverflow.com/questions/20440358
复制相似问题