2017-07-17 62 views
1

我在根元素上有一個帶有多個NavigationProperties的OData服務。我想執行一個查詢,我不會從根中返回任何結果,例如(爲簡潔,刪除$top的和元數據)

http://services.odata.org/V4/TripPinServiceRW/People?$展開;友($選擇=姓)& $選擇=

可以返回

{ 
    "value": [{ 
     "Friends": [{ 
       "FirstName": "Scott" 
     }] 
    }] 
} 

目前,我必須指定根級別中的至少一列$select,否則全部根級別的列將被檢索

(即 http://services.odata.org/V4/TripPinServiceRW/People?$展開;友($選擇=姓)& $選擇=姓 )

是否有可能以某種方式指定一個空$選擇列表?我無法在ABNF中看到明顯的方式。

+0

我不相信這是可能的,但爲了讓我更好地瞭解這種情況,你打算如何使用這些數據?如果你不知道朋友屬於哪個人,那麼爲什麼這種迴應對你有用? – TomDoesCode

+0

我正在寫一些代碼,用於從動態數據源生成OData(用戶選擇他們想要查看的列)。 沒有指定一個空的$ select的方法,我需要知道頂層至少有一個「靜態」列名,這隻需要更多的代碼。完全可以解決問題,但在odata規範中似乎略有疏忽。 –

回答

1

啊......找到了!

如果你有一個$expand的NavigationProperty,您可以使用NavigationProperty名稱作爲$select,所以

http://services.odata.org/V4/TripPinServiceRW/People?$expand=Friends($select=FirstName)&$select=Friends

收益率*

{ 
    "value": [{ 
     "Friends": [{ 
      "FirstName": "Scott" 
     }] 
    }] 
} 

* $頂部和元數據刪除爲了清晰起見