在ASP.NET WebAPI中使用复合PK比较文章

时间:2015-09-15 15:32:59

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

在我发出POST请求之前,应用程序应该比较输入对象是否存在于数据库表中。我的意图的问题是,db表有两个主键,当我尝试比较它时,它告诉我文章不存在,因为第一个PK Id会自动增加。所以,对我来说重要的是第二个PK isin

以下代码不起作用:

[HttpPost]
[ResponseType(typeof(Fon))]
public async Task<IHttpActionResult> PostFond(Fon fon)
{
  if (!ModelState.IsValid)
  {
     return BadRequest(ModelState);
  }

  var fonds = db.Fon.Find(fon.Id, fon.isin);
  if (fonds.isin != null)
  {
     return BadRequest(ModelState); //ISIN already exists.
  }

  db.Fon.Add(fon);
  await db.SaveChangesAsync();

  return CreatedAtRoute("DefaultApi", new { id = fon.Id }, fon);
}

如何检查isin是现有的还是新的?!

编辑:(解决方案)

我尝试了很多东西并找到了正确的解决方案。以下代码说明了这一点:

var fonds = db.Fon
              .Where(f => f.isin == fon.isin)
              .FirstOrDefault();

if (fonds != null)
{
    return Conflict();
}

db.Fon.Add(fon);
await db.SaveChangesAsync();

0 个答案:

没有答案