我正在创建一个ASP.NET CORE API,当我想在postgres数据库中插入数据时遇到问题。
插入数据不会自动递增,即使我插入其他状态也总是以id = 0开始
我的控制器是:
[Route("api/[controller]")]
[ApiController]
public class StatusController : ControllerBase
{
private readonly intranetApplicationAPIContext _context;
public StatusController(intranetApplicationAPIContext context)
{
_context = context;
}
[HttpGet]
public ActionResult<List<Status>> GetAll()
{
return _context.Status.AsNoTracking().ToList();
}
[HttpGet("{id}", Name = "GetStatus")]
public ActionResult<Status> GetById(long id)
{
var status = _context.Status.Find(id);
if (status == null)
{
return NotFound();
}
return status;
}
[HttpPost]
public IActionResult Create(Status status)
{
_context.Status.Add(status);
_context.SaveChanges();
return CreatedAtRoute("GetStatus", new { id = status.Id }, status);
}
也许问题来自.AsNoTracking(),但我无法删除它,因为我会遇到此错误:
无法跟踪实体类型'Status'的实例,因为已经跟踪了具有相同键值的{'Id'}的另一个实例
在我的数据库中,我看到可以执行一个序列以自动递增,但是当我必须用以下命令进行插入时:
INSERT INTO status(state) VALUES ('test') RETURNING *;
如何在我的statusController中“翻译”它?