以下是使用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