Параметр действия OData null - PullRequest
0 голосов
/ 04 января 2019

Рассмотрим модель ниже. Два отдельных объекта, Product и Attribute, связаны через ProductAttribute.

public class Product
{
    public virtual ProductAttribute ProductAttribute { get; set; }
}

public class ProductAttribute
{
    public virtual Product Product { get; set; }

    public virtual Attribute Attribute { get; set; }
}

public class Attribute
{
    public string Name { get; set; }

    public object value { get; set; }
}

Чего я хотел бы добиться, так это создать POST Атрибута для api.com/odata/Products/Attribute, в котором создан и Атрибут, и сущность ссылки ProductAttribute. Поскольку атрибут никогда не должен существовать сам по себе, а всегда должен создаваться в контексте того, к чему он принадлежит, я хочу избегать сирот.

Однако, пытаясь реализовать такую ​​функциональность, я не нашел способа заставить ее работать без ODataActionParameters. Я бы хотел избежать необходимости получать элемент со строковым индексом и приводить его к ожидаемому типу. Здесь довольно легко ошибиться. Я также хотел бы избежать того, чтобы потребителю моего API приходилось знать, что для некоторых сообщений POST он должен включать дополнительный JSON, поскольку ожидается сбор для ODataActionParameters.

[HttpPost]
public ActionResult<Product> PostAttribute([FromODataUri] Guid key, [FromBody] Attribute attribute)
{
    // attribute is null here.
}

Я знаю, что учебники предписывают вам использовать ODataActionParameters, но я считаю этот подход очень громоздким. Есть ли способ сделать это с OData без ODataActionParameters?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...