加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 当使用复合键将IDENTITY_INSERT设置为OFF时,无法在表中插

发布时间:2020-12-15 03:52:49 所属栏目:百科 来源:网络整理
导读:我们最近在我们的数据库中添加了一个新的“级别” – 在数据库中的表中的现有ID标识字段之前添加了一个关键字“Company_ID”. 例如,如果一个表具有ID然后字段,它现在有Company_ID,然后是ID,然后是这些字段.这个想法是,这允许ID为提供给功能的每个不同的Compa
我们最近在我们的数据库中添加了一个新的“级别” – 在数据库中的表中的现有ID标识字段之前添加了一个关键字“Company_ID”.

例如,如果一个表具有ID然后字段,它现在有Company_ID,然后是ID,然后是这些字段.这个想法是,这允许ID为提供给功能的每个不同的Company_ID值自动递增(Company_ID 1可以具有ID 1,2,3等; Company_ID 2可以具有ID 1,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由数据库自动填充,然后用于通过View执行SHOW,等等.

然而,现在我们要将Company_ID设置为一个指定的值,留下ID,然后填充这些字段.

_db.Project.Add(newProject);
    _db.SaveChanges();

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

Cannot insert explicit value for identity column in table “Project”
when IDENTITY_INSERT is set to OFF

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

解决方法

问题在于ID.如果将字段设置为IDENTITY,则通常不能为其指定值 – IDENTITY属性标记为允许数据库自动为列添加递增值.

要解决此问题,请从ID中删除自动IDENTITY属性(如果要自动增加它,则可以随时在处理代码中执行此操作 – 在该字段中获取最高值,然后添加一个,然后分配该值)或转到数据库,并在表上设置IDENTITY _INSERT,这暂时允许您将值分配给IDENTITY字段.

SET IDENTITY_INSERT [yourTableName] ON

--go back and run your C# code>

SET IDENTITY_INSERT [yourTableName] OFF

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读