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