如何解决使用复合键“在IDENTITY_INSERT设置为OFF时,不为表中的标识列插入显式值”
睡觉后,我发现了此内容,适用于Visual Studio
c#代码:[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
。为我的每个ID
字段定义的这个(用我的话来说)告诉VisualStudio该字段是一个Identity,并在将值发送到数据库时“独立”。whenCompany_ID
首先发生并具有一个值,告诉VisualStudio其他地方有一个Identity字段_db.Project.Add(newProject);
,然后允许该_db.SaveChanges();
函数然后按要求运行。答案的这一部分是针对VisualStudio方面的。IDENTIY_INSERT
感谢@ matt-thrower,@steve-pettifer和其他贡献者,我了解SQL的要求。
解决方法
我们最近在数据库中添加了一个新的“级别”-在整个数据库中表中现有ID标识字段的上方/之前添加了一个键“ Company_ID”。
例如,如果一个表具有“ ID”和“字段”,则它现在具有“ Company_ID”,“
ID”和“字段”。想法是,这允许为提供给功能的每个不同Company_ID值自动递增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
)
在引入Company_ID之前,要执行CREATE,我们只需填充DescShort,TypeLookUp_ID,StatusLookUp_ID和IsActive字段,并将ID保留为默认值,可能为0。
记录已成功保存,并且ID由数据库自动填充,然后用于通过视图执行SHOW,依此类推。
但是,现在,我们要将Company_ID设置为指定值,保留ID,然后像以前一样填充字段。
_db.Project.Add(newProject);
_db.SaveChanges();
是的,我们要指定Company_ID值。我们希望ID像以前一样自动填充。我们收到错误消息:
IDENTITY_INSERT设置为OFF时,无法为表“项目”中的标识列插入显式值
这是由指定Company_ID还是由ID字段引起的?您知道我们如何纠正此问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。