我们最近在数据库中添加了一个新的"级别" - 在整个数据库的表中的现有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字段引起的?你知道我们如何纠正这个问题吗?