SQL Server数据库在插入时生成一个已经存在的密钥,为什么?

SQL Server数据库在插入时生成一个已经存在的密钥,为什么?,sql,sql-server,database,entity-framework,Sql,Sql Server,Database,Entity Framework,首先,我有一个由实体框架代码生成的数据库。我有一个11000行5列的表格 列Id是主键: 在从应用程序插入时(使用EF),我第一次得到一个错误;经过一些研究,我去数据库手动插入一条记录,看看它是否正常工作,我得到以下错误: 所有列都是外键,每个列的值都为1 有人能告诉我为什么我会犯这个错误吗 就像我说的,这个表已经有11000行了,select查询没有错误,更新没有错误,在insert期间数据库生成的主键是不正确的 10987钥匙存在 由于某种原因,您的id已关闭。因此,当您添加新记录时,它

首先,我有一个由实体框架代码生成的数据库。我有一个11000行5列的表格

Id
是主键:

在从应用程序插入时(使用EF),我第一次得到一个错误;经过一些研究,我去数据库手动插入一条记录,看看它是否正常工作,我得到以下错误:

所有列都是外键,每个列的值都为1

有人能告诉我为什么我会犯这个错误吗

就像我说的,这个表已经有11000行了,select查询没有错误,更新没有错误,在insert期间数据库生成的主键是不正确的

10987钥匙存在


由于某种原因,您的id已关闭。因此,当您添加新记录时,它试图重用现有记录。使用“DBCC CHECKIDENT('CandidatePositionStatus',RESEED,11000);”这样它尝试插入的下一个id值应该是11001,一个新值。

您的id由于某种原因被关闭。因此,当您添加新记录时,它试图重用现有记录。使用“DBCC CHECKIDENT('CandidatePositionStatus',RESEED,11000);”这样,它尝试插入的下一个id值应该是11001,一个新值。

DBCC CHECKIDENT('CandidatePositionStatus',NORESEED);“给了您什么?它只会让我们知道该表当前的标识值。也。“从CandidatePositionStatus中选择最大(Id)”会给您什么?这是结果:“检查标识信息:当前标识值“10987”,当前列值“11000”。DBCC执行已完成。如果DBCC打印了错误消息,请与您的系统管理员联系。您的Id因某种原因关闭。因此,当您添加新记录时,它试图重用现有记录。使用“DBCC CHECKIDENT('CandidatePositionStatus',RESEED,11000);”这样它尝试插入的下一个id值应该是11001,一个新值。现在正在工作:)。请插入您的评论作为回答,为了接受它,谢谢您这个问题的可能原因是什么?DBCC CHECKIDENT('CandidatePositionStatus',NORESEED);“给了您什么?它只会让我们知道该表当前的标识值。也。“从CandidatePositionStatus中选择最大(Id)”会给您什么?这是结果:“检查标识信息:当前标识值“10987”,当前列值“11000”。DBCC执行已完成。如果DBCC打印了错误消息,请与您的系统管理员联系。您的Id因某种原因关闭。因此,当您添加新记录时,它试图重用现有记录。使用“DBCC CHECKIDENT('CandidatePositionStatus',RESEED,11000);”这样它尝试插入的下一个id值应该是11001,一个新值。现在正在工作:)。请插入您的评论作为答案,为了接受它,谢谢您这个问题的可能原因是什么?