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

举报
汪子熙 发表于 2022/09/02 12:37:47 2022/09/02
【摘要】 什么是 OData entity type 的 key?最权威的定义,来自 OData 官网:OData EDM 模型的核心概念是实体 entities 和关联即 associations. Entities 是 OData 模型描述对象的实体类型(例如,客户、员工等)的实例,它们是结构化记录,由name 和强类型属性组成,并带有一个 key.Complex Types(复杂类型)是结构化类...

什么是 OData entity type 的 key?

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

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

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

总共 8 条数据:

在这里插入图片描述

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。