【发布时间】:2016-03-02 13:56:44
【问题描述】:
以下是使用实体框架的 Web Api 2 项目中 PUT 方法的标准支架代码。
当您拥有产品的 id 时,这很有效。
但是,我有一种情况,我想更新/放置一个产品不是基于表中的唯一 ID,而是一个不同的字段“internalRef”(字符串)与制造商 ID 相结合。 所以,我首先想检查是否有 internalRef='123' 和manufacturerId=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方法签名?!
-
我怀疑我确实可以。但是怎么做?我觉得我一直盯着自己看,看不到明显的东西
-
类似这样的东西:public async Task
PutProduct(string id, Product product) no?
标签: asp.net-web-api asp.net-web-api2