Отложить обычные свойства в OData

#odata

#odata

Вопрос:

В протоколе OData есть способ отложить представление свойств навигации (т. Е. Ссылок на определенный ресурс или коллекцию), чтобы сервер не возвращал клиенту дополнительные данные.

Мой вопрос в том, могу ли я сделать то же самое для обычных свойств? У меня есть структура данных, для вычисления которой серверу требуется много времени, и я бы хотел, чтобы клиент не получал значение по умолчанию.

Свойство логически является частью объекта и не является свойством навигации. В документации OData везде, где я видел отложенный контент, речь идет об отсрочке свойства навигации. Хотел узнать, возможно ли отложить обычные свойства, и если нет, каковы мои альтернативные варианты.

Ответ №1:

Вы можете использовать проекцию на клиенте, и вы получите только спроецированные свойства. Но вы не получите ссылку на непроецируемое свойство, это реализовано только для свойств навигации.

Надеюсь, это поможет,

Моника Фринту

Ответ №2:

Я не думаю, что это возможно.

В качестве альтернативы вы могли бы выделить вычисляемые свойства в другой объект (скажем, разделить MyEntity на MyEntity и MyEntityCalculations). Затем вы можете повторно использовать идентификатор вашего исходного объекта в качестве идентификатора второго объекта.

Итак, если у вас есть экземпляр MyEntity с ID = 32, то у вас может быть экземпляр myEntityCalculations, также с ID = 32, который затем содержит только вычисляемые свойства.

Комментарии:

1. Означает ли это, что myEntityCalculations также должно иметь дополнительное свойство с именем ID, поскольку оно должно быть ключом? Или есть какой-то способ сказать, что идентификатор myEntityCalculations ссылается на идентификатор MyEntity?

2. Конечно, вам нужно использовать общий идентификатор, чтобы у обоих объектов было свойство ID.