实体框架:插入导致使用Azure SQL而不是本地违反PRIMARY KEY约束

时间:2017-07-05 15:39:41

标签: c# sql-server entity-framework azure

我正在迁移本地SQL Server 2014数据库以在Azure中使用。我有一个在IIS 8中运行的Asp.net MVC应用程序,以常规方式使用Entity Framework连接到Azure SQL Server数据库。

  1. 我有dbContext
  2. Using(... dbContext.Database.BeginTransaction())
  3. 已添加其他实体且SaveChanges()成功运行
  4. 特别是对于一个实体,我会db.entity.add(newEntity),然后是SaveChanges(),我得到:
      

    异常:违反PRIMARY KEY约束'PK_entity'。无法在对象'dbo.entity'中插入重复键。重复键值为(2)。

  5. 主键是一个自动增量编号,我是唯一运行它的用户。此表中已有156条记录。

    当我使用本地SQL Server实例在本地计算机上运行它时,这很好用,但是当从IIS和Azure数据库运行时,会发生此异常。

    该实体根本没有其他关系/约束。

    我觉得可能有一个线索,如果我一直试图保存此记录(ISS和Azure),失败的重复键值每次递增1。

1 个答案:

答案 0 :(得分:3)

这很奇怪,Azure Bd中的identity coll索引可能设置为1。 您可以将您的身份证件强制转换为大于表中最后一个ID的索引:

在sql server中,您可以查看下一个Id:

SELECT IDENT_CURRENT ('tablename') AS Current_Identity;

您可以将其强制为其他号码:

DBCC CHECKIDENT ('tablename', RESEED, 157);