我正在爲第三方產品構建一個Asp.Net Web API,並且正在考慮將OData 4用於我的API。我在我的對象模型中有相當大的自由度,但不能改變底層的數據模型。如何在創建odata API時處理複雜的關係?
我知道odata支持導航屬性來定義關係,但它們似乎只是對象之間的直接鏈接。在建立在關係上的數據模型中,很多情況下都有自己的屬性。例如,「用戶」具有與組,組織單位等的「成員關係」的集合,並且「成員」鏈接本身具有「默認」布爾屬性。在某些情況下,關係有多個屬性。
有沒有最好的方法來處理這個問題?我是否需要創建具有屬性的「成員資格」實體,並且從具有導航屬性的用戶(用戶>會員資格>羣組)中擁有兩個躍點?我是否應該創建一個'會員'複雜類型,創建一個'會員'屬性,這是'會員'的集合,並在'會員'上有一個導航屬性(如果可能的話)?爲了方便起見,使用這些選項中的任何一個,我還應該爲只讀組的所有成員添加一個只讀導航屬性(用戶>組)?
感謝
謝謝亞歷山德魯。我的問題是關於用戶和組之間的鏈接具有哪些屬性,儘管我不認爲你的回答地址。 – AndrewS
查看有關[目標屬性](https://tools.ietf.org/html/rfc5988#section-5.4)的Web鏈接規範,看起來應該能夠[擴展](https://工具。 ietf.org/html/rfc5988#section-6.3)他們與應用程序特定的數據。 –