以下是使用Entity Framework的Web Api 2项目中PUT方法的标准scafolding代码。基于自定义ID的更新/放置方法?
当您拥有产品的ID时,此功能很好。
但是,我有一种情况,我想根据表中的唯一标识更新/放置一个产品,但将不同的字段'internalRef'(字符串)与制造标识结合使用。 所以,我首先希望检查是否有一个产品internalRef ='123'和manufactureId = 1。如果不返回NotFound()。如果有,则使用发布的数据更新该产品。
有关如何做到这一点的任何建议?
[Route("product/update")]
[ResponseType(typeof(void))]
public async Task<IHttpActionResult> PutProduct(int id, Product product)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (id != product.Id)
{
return BadRequest();
}
db.Entry(product).State = EntityState.Modified;
try
{
await db.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!ProductExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}
我真的不明白你的问题,你能不能改变Put方法签名?! – Marco
我怀疑我可以。但是如何?我觉得我有盲目的目光,看到明显的 – brother
就像这样:public async Task PutProduct(string id,Product product)no? –
Marco