使用我的ASP.NET CORE API插入postgres数据库时出错

时间:2018-07-26 07:21:42

标签: postgresql entity-framework auto-increment

我正在创建一个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中“翻译”它?

0 个答案:

没有答案