2014-11-03 45 views
0

我有一个包含单个标识列的表,其中需要发送POST请求并能够检索生成的标识值。ASP.Net Web API 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); 
} 

我挣扎了一下,以测试通过邮递员POST调用。

那么,有没有一种合适的方法来创建类似于上述情况的POST api调用,其中唯一的列是身份?

谢谢。

**(更新)附加信息:** 我正在上线的错误:

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

凡有说值不能为空,但我不能肯定什么价值会需要在这里添加,因为这是一个标识列...

回答

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); 
} 

不知道这是正确的方式,但现在,它似乎解决我的能够获得的列值的问题。

希望任何其他答案,如果可用。