Я пытаюсь найти пример создания (POST) нового объекта службе OData v4, когда есть свойство навигации.POSTing нового объекта с навигационным свойством
Например, предположим, что у меня есть следующие две модели:
class Item
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public virtual Group Group { get; set;}
}
class Group
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
Если я хочу, чтобы создать элемент, который должен принадлежать к уже определенной группе (с, скажем, ID = 123), то я отправлю:
{
"Name": "New item",
"Group": ???
}
Что необходимо указать для группы? Я предполагаю, что мне нужно как-то ссылаться на него по ID. Конечно, я мог бы включить внешний ключ в объект Item (GroupId) и добавить его. Вот как я это делаю сейчас, и это работает, но это единственный способ пойти? Что должен Я делаю? Благодарю.
Действительно ли это работает? Свойство Group.Name кажется излишним, кроме того, что требуется проверка «Имя требуется». С более крупными объектами и более сложными отношениями я вижу, что этот простой запрос становится огромным. – Barguast
[Эта часть спецификации OData v4] (http://docs.oasis-open.org/odata/odata/v4.0/errata01/os/complete/part1-protocol/odata-v4.0-errata01-os -part1-protocol-complete.html # _Toc399426823), похоже, относится к тому, что я пытаюсь сделать. К сожалению, на самом деле это не работает. Я также разместил об этом на своем дискуссионном форуме Codeplex. – Barguast
Так вы это делаете, но вам не нужно включать свойства, которые уже существуют в базе данных, или свойства, которые не требуются (с нулевым значением или с ограничениями по умолчанию). Предполагая, что у Группы есть внешний ключ для элемента, просто добавление объекта «Группа» в ваш JSON делает привязку автоматически. –