检查包含这些值的产品是否已经存在

时间:2016-03-16 13:07:13

标签: entity-framework asp.net-web-api2

在WebAPI项目中,我有以下控制器;

 public async Task<IHttpActionResult> PostProduct(Product product)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.Products.Add(product);
        await db.SaveChangesAsync();

        return Ok(product);
    }

基于此模型

public class Product
{
    public int Id { get; set; }
public int ExternalId { get; set }
    public string Title { get; set; }
    [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    public DateTime Created { get; set; }
    public string Description { get; set; }
public int ProductTypeId { get; set; }
    public virtual ProductType IncidentType { get; set; }

    public virtual ICollection<Manufacture> Manufactures { get; set; }
}

在我的控制器中,我想在保存产品之前进行检查,检查带有ProductTypeId的ExternalId togethr是否已经不存在。 意思是,应该只有一个产品,其ExternalId为123 togethr,ProductTypeId为23。

如何将此检查添加到上面的控制器?

1 个答案:

答案 0 :(得分:1)

public async Task<IHttpActionResult> PostProduct(Product product)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    if(db.Products.Any(x => x.ExternalId == product.ExternalId && x.ProductTypeId == product.ProductTypeId))
    {
        return Conflict();
    }

    db.Products.Add(product);
    await db.SaveChangesAsync();

    return Ok(product);
}

虽然我不建议你在控制器中使用那种逻辑。