Правильный способ сделать это будет что-то вроде:
http://odata.stackexchange.com/stackoverflow/atom/Users(1569)?$expand=Comments
Проблема в том, что в источнике данных нет пользователей (не знаю почему), поэтому приведенный выше запрос вернет 404. Но это правильный синтаксис.
Идея состоит в том, что если вы хотите получить информацию только об одном пользователе, вы «переходите» к нему с помощью /Users(1569)
(материал в parethesis является первичным ключом набора сущностей). Затем, если вы также хотите включить все комментарии, вы просто добавляете $expand=Comments
. Если вам нужны только комментарии, а не информация о пользователе, вы можете сделать /Users(1569)/Comments
.
Обратите внимание, что используемая вами служба не определяет свойства навигации, поэтому вышеприведенное не будет работать, так как "объединения" в действительности не поддерживаются. Но конечная точка odata для stackexchange имеет определенные свойства навигации.
Как правило, объединения определяются на сервере / службе, поэтому клиенту не нужно знать, какой столбец является внешним ключом, для какого первичного ключа.
Это также помогает с источниками данных, которые не используют реляционные базы данных в качестве хранилища, поскольку не вынуждает их создавать поддельные внешние ключи.
Вы можете расширять вниз «слои» графика. Если объект, возвращаемый в раскрытии, также определяет дополнительные свойства навигации, то вы можете указать список свойств навигации через запятую.
Вот пример для готовой службы, обратите внимание, что это расширяет каждого клиента в коллекции, что похоже на множественное объединение.
.../Customers?$expand=Orders,OrderDetails