【问题标题】:EF Cannot insert explicit value for identity column in table 'PATIENT DONOR' when IDENTITY_INSERT is set to OFF当 IDENTITY_INSERT 设置为 OFF 时,EF 无法在表“PATIENT DONOR”中插入标识列的显式值
【发布时间】:2016-01-20 06:22:36
【问题描述】:

我正在使用 EF,并且我有一个具有标识属性的表,我尝试了很多解决方案,但我仍然收到该错误。 我将类中的属性定义为:

[Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int PATIENTDONORID { get; set; } 

我仍然得到那个错误,我在 OnModelCreating 中设置了身份选项,我也得到了同样的错误

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
           // throw new UnintentionalCodeFirstException();

            modelBuilder.Entity<PATIENT_DONOR>().Property(x => x.PATIENTDONORID)
              .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

        }

这是在数据库中插入和保存更改的代码:

foreach (var item in patient.DONORS)
                {
                    if (item.Checked)
                    {
                        db.PATIENT_DONOR.Add(new PATIENT_DONOR() { PATIENT_ID = patient.PATIENT_ID, DONOR_ID = item.ID});
                    }
                }

               // db.Entry(patient).State = EntityState.Modified;
                db.SaveChanges();

我该怎么办?

【问题讨论】:

  • 您可以尝试将数据库中的表中的“IsIdentity”属性设置为 true。也许不是直截了当的方法。
  • 但我希望它是数据库中的身份
  • 您希望 PatientDonorID 列作为 PatientDonor 表的主键吗?对
  • 没错。但用户不会手动输入此列。
  • 发布在问题本身中插入的代码,包括实际保存更改的代码。这就是导致问题的原因,而不是配置。 cmets 中的代码很难阅读。

标签: c# .net entity-framework model-view-controller


【解决方案1】:

它现在工作正常。 我意识到在 dB 发生任何变化后,我必须删除并重新拖动模型中的表格。 而且代码本身没有问题

【讨论】:

  • 哈哈!哇 - 我认为这是 IDE 的错误。 ;o)
  • 我是第一次将DB附加到可视化IDE后进行更改,所以我之前没有这个问题
猜你喜欢
  • 2012-11-10
  • 1970-01-01
  • 2016-05-13
  • 2016-08-18
  • 2019-03-10
  • 2020-03-09
  • 2021-05-15
相关资源
最近更新 更多