父实体上的WebAPI POST子项

时间:2013-12-31 15:58:19

标签: c# .net asp.net-web-api coding-style

我有以下型号:

public class Product
{
    [Key]
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    [Required]
    public Category Category { get; set; }
}

public class Category
{
    [Key]
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    public ICollection<Product> Products { get; set; }
}

我有一个包含两个控制器的WebAPI项目: ProductController与GET,POST,PUT和DELETE。 和带有GET的CategoryController,包括Products,POST,PUT和DELETE。

我希望能够在现有类别中添加产品,但我不知道如何执行该产品。

我尝试使用对父类别的引用来调用ProductController的POST方法,但它在我的数据库中创建了一个新类别。

我是否必须使用类别的PUT方法?

问候。

1 个答案:

答案 0 :(得分:2)

尝试稍微更改模型。

将CategoryId作为外键添加到产品实体。如果每个产品都有一个类别,但一个类别可以有许多产品使其成为一对多的关系。

现在,当您发布到产品控制器时,请确保使用它传递CategoryId。这建立了两者之间的关系,您可以通过联接选择有关该类别的信息,或者您想要解决问题。

我假设您使用Entity Framework进行数据访问?但鉴于你提供的信息,我能想到的就是这些。