Я создаю веб-API Asp.Net для стороннего продукта и рассматриваю использование OData 4 для моего API. У меня есть достаточная свобода в моей объектной модели, но я не могу изменить базовую модель данных.Как обрабатывать сложные отношения при создании API-интерфейса odata?
Я понимаю, что odata поддерживает свойства навигации для определения отношений, но они, по-видимому, являются прямыми связями между объектами. Во многих случаях в модели данных, на которой я строил отношения, есть свои собственные свойства. Например, «Пользователь» имеет коллекцию отношений «Член» с группами, организационными единицами и т. Д., А сама ссылка «Member Of» имеет свойство «По умолчанию» boolean. В некоторых случаях отношения имеют несколько свойств.
Есть ли лучший способ справиться с этим? Должен ли я создать объект «Членство» со свойствами и иметь два прыжка от пользователя с навигационными свойствами (User> Membership> Group)? Должен ли я создать сложный тип «Членство», создайте свойство «Членство», которое представляет собой коллекцию «Членство» и имеет свойство навигации в «Членстве» (если это возможно)? С помощью любой из этих опций я должен также добавить свойство навигации только для чтения для всех участников групп (User> Group)?
Благодаря
Спасибо Alexandru. Мой вопрос в том, где ссылки между пользователями и группами имеют свойства, хотя я не думаю, что ваши адреса ответов. – AndrewS
, смотря на спецификацию веб-ссылок, касающуюся [Target Attributes] (https://tools.ietf.org/html/rfc5988#section-5.4), похоже, что вы должны иметь возможность [расширять] (https: // tools. ietf.org/html/rfc5988#section-6.3) с данными конкретных приложений. –