OData metadata 定义中,entity type key 的作用是什么
什么是 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’
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的OData metadata 定义中,entity type key 的作用是什么的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 介绍一个能避免 CORS 错误的 Chr
- 下一篇: SAP 产品 UI 里的容器组件的概念和