【发布时间】: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