【问题标题】:Cannot insert explicit value for identity column when IDENTITY_INSERT is set to OFF Error当 IDENTITY_INSERT 设置为 OFF 错误时,无法为标识列插入显式值
【发布时间】:2017-10-26 05:35:06
【问题描述】:

尝试向表中插入值时出现此错误。 该表是使用以下脚本创建的:

    CREATE TABLE [dbo].[Audit_PatientControlledSubstanceAgreement](
    [PatientID] [bigint] NOT NULL,
    [UsersID] [bigint] NOT NULL,
    [DateAdded] [date] NOT NULL,
    [FileName] [nvarchar](500) NULL,
    [FilePath] [nvarchar](max) NULL,
    [FileType] [nvarchar](50) NULL,
    [NextScheduledDate] [date] NULL,
    [CreateDT] [datetime2](7) NULL,
    [AgreementType] [nvarchar](50) NULL,
    [Deleted] [bit] NOT NULL,
    [ID] [int] IDENTITY(1,1) NOT NULL,
 CONSTRAINT [PK_Audit_PatientControlledSubstanceAgreement] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)

我什至尝试将 IDENTITY_INSERT 更改为 ON,但仍然遇到相同的错误。我正在使用下面的代码将项目插入到表中:`

    var Audit_PatientControlledSubstanceAgreement = new Audit_PatientControlledSubstanceAgreement
                            {
                                CreateDT = DateTime.Now,
                                Deleted = true,
                                AgreementType = model.AgreementType,
                                DateAdded = model.DateAdded,
                                FileName = model.FileName,
                                FilePath = model.FilePath,
                                FileType = model.FileType,
                                NextScheduledDate = model.NextScheduledDate,
                                PatientID = model.PatientID,
                                UsersID = model.UsersID
                            };

                            db.Audit_PatientControlledSubstanceAgreement.Add(Audit_PatientControlledSubstanceAgreement);
                            db.SaveChanges();

`

【问题讨论】:

  • 在您的代码中,您没有为 ID 指定值,是吗?
  • 不,我没有指定 ID 的值,但仍然出现异常。
  • Audit_PatientControlledSubstanceAgreement 的类定义是什么?它是代码优先的 EF 模型吗?

标签: c# sql-server entity-framework


【解决方案1】:

Id上方添加这一行:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]

像这样

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

【讨论】:

    猜你喜欢
    • 2016-05-13
    • 2019-03-10
    • 2018-06-29
    • 2013-01-28
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多