mot*_*deh 5 c# sql-server entity-framework
我在我的网站上使用实体框架6.0.
我有一个表插入一些数据,这个表有ID(int)的标识列,我的标识种子等于1;
有些时候,我通过sql管理工作室看这个表,我通过将这个ID跳到大号来遇到,例如从30跳到10024.
为什么会这样?这是一个错误还是什么?
我在这里发布了我的示例代码,我通过以下代码向此表插入数据:
using (var context = new MyModelDBEntities())
{
mytable mt=new mytable;
mt.name=""; //for example
context.mytables.add(mt);
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
这个代码是正常的吗?那么发生在我的桌子上的那个身份号码跳到了一个大号?
可能有很多原因 - 一个可能是尝试插入9,994条记录失败(或多次失败的尝试共计9,994条记录).
标识列不保证连续的 ID; 它保证了唯一的 ID.如果插入尝试失败(或者是回滚的事务的一部分),则不会重用已生成的ID.
另一种选择是在使用后插入特定ID SET IDENTITY_INSERT ON.
在任何情况下,你都有超过20亿个ID可用,因此差距为10,000左右不应引起警报.如果随着时间的推移差距越来越大,那么您可能会遇到更大的问题,因为差距可能呈指数级增长.
| 归档时间: |
|
| 查看次数: |
2674 次 |
| 最近记录: |