我正在迁移本地SQL Server 2014数据库以在Azure中使用。我有一个在IIS 8中运行的Asp.net MVC应用程序,以常规方式使用Entity Framework连接到Azure SQL Server数据库。
dbContext
Using(... dbContext.Database.BeginTransaction())
SaveChanges()
成功运行db.entity.add(newEntity)
,然后是SaveChanges()
,我得到:
异常:违反PRIMARY KEY约束'PK_entity'。无法在对象'dbo.entity'中插入重复键。重复键值为(2)。
主键是一个自动增量编号,我是唯一运行它的用户。此表中已有156条记录。
当我使用本地SQL Server实例在本地计算机上运行它时,这很好用,但是当从IIS和Azure数据库运行时,会发生此异常。
该实体根本没有其他关系/约束。
我觉得可能有一个线索,如果我一直试图保存此记录(ISS和Azure),失败的重复键值每次递增1。
答案 0 :(得分:3)
这很奇怪,Azure Bd中的identity coll索引可能设置为1。 您可以将您的身份证件强制转换为大于表中最后一个ID的索引:
在sql server中,您可以查看下一个Id:
SELECT IDENT_CURRENT ('tablename') AS Current_Identity;
您可以将其强制为其他号码:
DBCC CHECKIDENT ('tablename', RESEED, 157);