小编and*_*d_E的帖子

"当IDENTITY_INSERT设置为OFF"时,无法使用复合键为表中的标识列插入显式值

我们最近在数据库中添加了一个新的"级别" - 在整个数据库的表中的现有ID Identity字段之上/之前添加了一个键"Company_ID".

例如,如果表具有ID然后是字段,则它现在具有Company_ID,然后是ID,然后是字段.这个想法是,这允许ID为提供给功能的每个不同的Company_ID值自动递增(Company_ID 1可以具有ID 1,2,3等; Company_ID 2可以具有ID 1,2,3等).

自动增量字段保留为ID.示例表是:

    [dbo].[Project](
      [Company_ID] [int] NOT NULL,
      [ID] [int] IDENTITY(1,1) NOT NULL,
      [DescShort] [varchar](100) NULL,
      [TypeLookUp_ID] [int] NULL,
      [StatusLookUp_ID] [int] NULL,
      [IsActive] [bit] NOT NULL,
    CONSTRAINT [PK_Project] PRIMARY KEY CLUSTERED 
    (
      [Company_ID] ASC,
      [ID] ASC
    )
Run Code Online (Sandbox Code Playgroud)

在引入Company_ID之前,为了执行CREATE,我们只需填充DescShort,TypeLookUp_ID,StatusLookUp_ID和IsActive字段,并将ID保留为默认值,可能为0.

记录已成功保存,ID由数据库自动填充,然后用于通过View执行SHOW,依此类推.

但是,现在我们要将Company_ID设置为指定值,保留ID,并像以前一样填充字段.

    _db.Project.Add(newProject);
    _db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

是的,我们要指定Company_ID值.我们希望自动填充ID,如前所述.我们收到错误消息:

当IDENTITY_INSERT设置为OFF时,无法在表"Project"中为identity列插入显式值

这是由指定Company_ID还是ID字段引起的?你知道我们如何纠正这个问题吗?

c# sql sql-server-2008 composite-primary-key

13
推荐指数
3
解决办法
6万
查看次数

标签 统计

c# ×1

composite-primary-key ×1

sql ×1

sql-server-2008 ×1