我没有意识到该URI http://services.odata.org/OData/OData.svc/Categories(1)/Products
和http://services.odata.org/OData/OData.svc/Categories(1)/$links/Products
之间有什么区别。在http://www.odata.org/documentation/uri-conventions/#AddressingLinksBetweenEntries文档中,解释不够明确。
答案 0 :(得分:5)
在这种情况下,第一个遍历导航属性(Products),并将返回Product实体的提要(所有与ID为1的类别相关的产品)。您可以将其想象为访问导航的值属性。它允许您访问导航属性的“另一面”。
第二个用于解决关系本身。它返回一个解决产品的URL列表,但它不会返回实体本身。获取$ links URL通常不太有用(有时可能)。此URL对于更新更为重要。例如,如果您有一个ID为1的现有类别和一个ID为42的现有产品,并且您希望该产品属于该类别,那么您将向上面的$ links URL发送一个POST,并在有效负载中发送一个URL到ID为42的产品。这将在两个实体之间建立关系。 $ links URL允许您访问导航属性的“链接”。