我Entity Data Model
从 OData Web 服务获得了一个,现在我试图了解 URL 组件 ( http://services.odata.org/OData/OData.svc/Category(1)/Products?$top=2&$orderby=name
) 与 EDM 标签的关系。
据我了解,Category
可以同时是EntityType
and EntitySet
,但不能是,例如,ComplexType
或其他什么?
请给我澄清一下!
我Entity Data Model
从 OData Web 服务获得了一个,现在我试图了解 URL 组件 ( http://services.odata.org/OData/OData.svc/Category(1)/Products?$top=2&$orderby=name
) 与 EDM 标签的关系。
据我了解,Category
可以同时是EntityType
and EntitySet
,但不能是,例如,ComplexType
或其他什么?
请给我澄清一下!
resourcePath = "/"
[ entityContainerName "." ] entitySetName [collectionNavigation] /
( entityColServiceOpCall / entityColFunctionCall ) [ collectionNavigation ] /
( entityServiceOpCall / entityFunctionCall ) [ singleNavigation ] /
( complexColServiceOpCall / complexColFunctionCall ) [ boundOperation ] /
( complexServiceOpCall / complexFunctionCall ) [ boundOperation / complexPropertyPath ] /
( primitiveColServiceOpCall / primitiveColFunctionCall ) [ boundOperation ] /
( primitiveServiceOpCall / primitiveFunctionCall ) [ boundOperation / value ] /
actionCall
http://www.odata.org/documentation/odata-v3-documentation/abnf/
如果我们正确阅读(希望如此),第一个组件必须始终是实体集的名称。(合格的)实体类型可以明确指定为 的一部分,collectionNavigation
主要用于导航继承树。
我可以验证这一点;当首先指定实体类型名称(例如“Person”)而不是实体集名称(例如“People”)时,WCF 实现会返回正确的 404。
您是正确的,也不能将复杂类型指定为第一个组件,因为它们不是实体,因此没有标识(反过来,如果没有“关联”实体,就无法引用它们的实例)。
希望这能回答你的问题。