只有一个标识列的ASP.Net Web API POST到表

时间:2014-11-03 15:52:10

标签: asp.net-web-api identity-column

我有一个包含单个标识列的表,我需要发送POST请求并能够检索生成的标识值。

我的代码如下:

// POST: api/XXXX
[ResponseType(typeof(MyFileDTO))]
public IHttpActionResult PostMyFile(MyFile myFile)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    db.MyFile.Add(myFile);
    db.SaveChanges();

    var dto = new MyFileDTO()
    {
        FileId = myFile.FileId
    };

    return CreatedAtRoute("DefaultApi", new { id = myFile.FileId }, dto);
}

我正在努力通过Postman测试这个POST调用。

那么,是否有一种正确的方法可以创建类似于上述情况的POST api调用,其中唯一的列是标识?

感谢。

**(更新)其他信息:** 我收到错误:

db.MyFile.Add(myFile);
db.SaveChanges();

说它的值不能为null,但我不太清楚这里需要添加什么值,因为这是一个标识列...

1 个答案:

答案 0 :(得分:0)

找到解决这个问题的方法。

几乎有以下代码:

// POST: api/XXXX
[ResponseType(typeof(MyFileDTO))]
public IHttpActionResult PostMyFile(MyFile myFile)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    db.MyFile.Add(myFile);
    db.SaveChanges();

// Get the highest myFile value.
long maxMyFileId = db.MyFile.Max(p => p.MyFileId)

    var dto = new MyFileDTO()
    {
        FileId = maxMyFileId
    };

    return Ok(Dto);
}

不确定这是否是正确的方法,但就目前而言,它似乎解决了我能够获取列值的问题。

如果有的话,会感激任何其他答案。