我有WebAPI2项目。
我控制器我有POST方法
[ResponseType(typeof(StartWorkingDay))]
public IHttpActionResult PostStartWorkingDay(StartWorkingDay startWorkingDay)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.StartWorkingDays.Add(startWorkingDay);
try
{
db.SaveChanges();
}
catch (DbUpdateException)
{
if (StartWorkingDayExists(startWorkingDay.Id))
{
return Conflict();
}
else
{
throw;
}
}
return CreatedAtRoute("DefaultApi", new { id = startWorkingDay.Id }, startWorkingDay);
}
这是我的模特:
public partial class StartWorkingDay
{
public int Id { get; set; }
public string Company { get; set; }
public string Date { get; set; }
public string Time { get; set; }
public string INN { get; set; }
}
此时我需要在发送帖子请求时添加ID。
当我发送第一个请求时,它会使用id:0
下一个请求是空响应,表中没有数据。
如何自动生成ID?
答案 0 :(得分:1)
您应该在数据库端生成id。使用DatabaseGenerated
属性很容易。通过这种方式实现在插入行上生成id值:
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
或者使用流畅的配置
modelBuilder.Entity<StartWorkingDay>().Property(d => d.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
修改配置后,请确保将更改传播到数据库。如果您使用DropCreateDatabaseAlways
或DropCreateDatabaseIfModelChanges
数据库初始化程序,则会自动执行此操作。