我的 Id Key 没有 "restart",并且总是只在 POST 请求期间在数据库中递增

My Id Key doesn't "restart" and always only increments in database during POST request

我正在尝试使用 Angular 和 Web API 创建一个应用程序来进行一些简单的 CRUD 操作。

我成功地将 Web API 和 Angular 连接到我的数据库,但是每当我发出 POST 请求时(即使我的数据库中没有任何内容) ,我的 ID 从“记住”的最后一个数字 TimeId 开始,如果我的数据库为空,我希望它从 1 开始。

谁能告诉我为什么会这样以及如何解决这个问题?

我提出了 POST 请求,它在数据库中看起来像这样:

现在,如果我使用 TimeId(使用 Swagger)删除它,我的数据库将为空。

但是如果我尝试发出另一个 POST 请求,我的 TimeId 将不会从 1 开始而是从 35:

我的 POST 网络 API 方法是:

[HttpPost]
public async Task<ActionResult<Time>> PostTime(Time time)
{
    _context.Times.Add(time);
    await _context.SaveChangesAsync();
    return CreatedAtAction("GetTime", new { id = time.TimeId }, time);
}

GetTime方法是:

[HttpGet("{id}")]
public async Task<ActionResult<Time>> GetTime(int id)
{
    var time = await _context.Times.FindAsync(id);
 
    if (time == null)
    {
        return NotFound();
    }

    return time;
}

当我从 Angular 端执行 POST 请求时,同样的事情发生了,但我想这是因为 Angular 正在使用来自 Web 的 POST 方法API.

与删除操作无关

  1. 如果您允许数据​​库在插入时自动增加值,那么这就是您得到的行为。

  2. 另外你还必须了解删除、截断和重新种子之间的区别。

因此,如果您真的想再次将其重置为 1,则必须在 SQL 服务器数据库中执行以下操作(table 包含记录的数据库)

DBCC CHECKIDENT ('your table name', RESEED, 1)
GO

注意:您没有指定数据库,因此我的解决方案将适用于 SQL 服务器。