天翼云代理,天翼云代理商,北京代理商
天翼云折扣专线:400-150-1900(全国市话)

OData metadata 定义中,entity type key 的作用是什么

什么是 OData entity type 的 key?


最权威的定义,来自 OData 官网:


image.png


OData EDM 模型的核心概念是实体 entities 和关联即 associations. Entities 是 OData 模型描述对象的实体类型(例如,客户、员工等)的实例,它们是结构化记录,由name 和强类型属性组成,并带有一个 key.


Complex Types(复杂类型)是结构化类型,也由属性列表组成,但没有 key,因此只能作为包含实体的属性或作为临时值存在,而无法单独存在。


OData Complex Types 同 ABAP DDIC 里的 Structure 非常类似。


Entity key 由单个或者多个 OData entities 属性组成(例如,CustomerId 或 OrderId),用于唯一标识实体类型实例并允许实体类型实例参与关系的基本概念。


通过具体的例子来说明。


下面是 Northwind OData metadata url:


https://services.odata.org/v2/Northwind/Northwind.svc/$metadata



image.png

从结果列表看出,有一个 EntityType,名称为 Category,Key 为 CategoryID.


要查看系统所有的 category,先要找到 Entity Type Category 对应的 entitySet:


image.png


在 metadata 里根据关键字 entityset 搜索,然后就能找到 Category 对应的 EntitySet 名称为 Categories.


然后把 Categories 拼接到 url 尾部,得到系统所有的 Categories:


https://services.odata.org/v2/Northwind/Northwind.svc/Categories?$format=json


总共 8 条数据:

image.pngimage.png


我们可以传入 CategoryID,根据这个 key 来查找对应的 Category 数据:


https://services.odata.org/v2/Northwind/Northwind.svc/Categories(3)?$format=json


image.png


根据 key 访问单条 entity 的语法:EntitySet 名称+(key值)


image.png


除了 key 之外,OData 不支持通过 entity 其他属性放到小括号里的语法来查询。


试图查找 CategoryName 为 Confections 的 Category 实例,语法错误:


image.png


对于根据非 key 属性查询的需求,使用 OData $filter 操作:


https://services.odata.org/v2/Northwind/Northwind.svc/Categories?$filter=CategoryName eq ‘Confections’

image.png

12年经验 · 提供上云保障

服务热线:132-6161-6125(手机) 400-150-1900(全国市话)

站内导航: 天翼云服务器价格| 天翼云购买流程| 天翼云代理| 北京天翼云代理商| 杭州天翼云代理| 深圳天翼云代理商| 钉钉代理商| 阿里云代理| 公司官网

我公司收款账号| 天翼云备案系统

CopyRight © 2019 天翼云代理商. All Rights Reserved 京ICP备11011846号-15 管理-北京志远天辰科技有限公司