Как обновить сущность OData и изменить ее свойства навигации в одном запросе?
Я пытаюсь реализовать простой сценарий, используя службу OData, предоставляемую службами данных WCF (используя приложение OData V3 / json; на данный момент odata = подробный формат полезной нагрузки. Я могу использовать формат JSON Light в будущем) , Основной сценарий выглядит так:
У меня есть две сущности:
class Person
{
public int ID { get; set; }
public string Name { get; set; }
public virtual PersonCategory Category { get; set; }
}
class PersonCategory
{
public int ID { get; set; }
public string Description { get; set; }
public virtual ICollection People { get; set; }
}
Теперь я хочу создать простую страницу редактирования для Персона. Эта страница редактирования может иметь ввод для имени и ввод или раскрывающийся список для категории человека.
Итак, сценарий идет:
Код загружает человека, используя $ expand для категории: GET /api.svc/People(1)?$expand=CategoryПользователь редактирует как лицо "Наименование имущества и его категория.Код для страницы делает один запрос на обновление этого лица "Свойства имени и категории.Ключ здесь находится в "один запрос ", Это та часть, которую яЯ не могу найти документацию для. Я'Мы видели примеры, где они делят номер 3 выше на два запроса. Как то так (я нене помню точный формат - яЯ также не уверен, если выЯ должен удалить ссылку категории, прежде чем делать PUT):
PATCH /api.svc/People(1) with content: {"Name": "new name" }
PUT /api.svc/People(1)/$links/Category with content: { "url": "/api.svc/Categories(2)" }
Но я'Мы также слышали, что это сказано, но не продемонстрировали, что этоВозможно реализовать это обновление в виде одного запроса с изменением свойства навигации «Категория», указанным в соответствии с другими изменениями сущности «Человек». Может ли кто-нибудь дать мне пример того, как это можно сделать? Кроме того, не могли бы вы показать мне, как это будет сделано с помощью свойства навигации «многие ко многим», а не «один ко многим»?мы описали выше.
И наконец, ям в настоящее время использует подробный формат JSON, V3. Если бы я использовал новый формат JSON light, ваши ответы на вышеприведенные вопросы были бы другими? Если так, то как?