请考虑以下模型。通过ProductAttribute链接了两个单独的实体Product和Attribute。
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; }
}
我要实现的是创建一个到api.com/odata/Products/Attribute的POST,同时创建Attribute和链接实体ProductAttribute。因为属性不应该单独存在,而应该在其所属的上下文中创建,因为我想避免成为孤儿。
但是,当尝试实现这种功能时,我发现没有ODataActionParameters就无法使其工作。我想避免获得带有基于字符串的索引的项并将其强制转换为期望的类型。在这里犯错似乎很容易。我还希望避免API的使用者知道某些POST消息,他必须包含额外的JSON,因为需要对ODataActionParameters进行收集。
[HttpPost]
public ActionResult<Product> PostAttribute([FromODataUri] Guid key, [FromBody] Attribute attribute)
{
// attribute is null here.
}
我知道教程要求您使用ODataActionParameters,但是我发现该方法非常麻烦。有没有ODataActionParameters的OData可以做到这一点?