我的 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,则必须在 SQL 服务器数据库中执行以下操作(table 包含记录的数据库)
DBCC CHECKIDENT ('your table name', RESEED, 1)
GO
注意:您没有指定数据库,因此我的解决方案将适用于 SQL 服务器。
我正在尝试使用 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,则必须在 SQL 服务器数据库中执行以下操作(table 包含记录的数据库)
DBCC CHECKIDENT ('your table name', RESEED, 1)
GO
注意:您没有指定数据库,因此我的解决方案将适用于 SQL 服务器。