Asp.net mvc 3 实体框架正在使插入时的id为空
当我试图在我的一个关系表中插入新行时,我遇到以下错误。我有以下两种型号:Asp.net mvc 3 实体框架正在使插入时的id为空,asp.net-mvc-3,entity-framework,asp.net-mvc-4,ef-code-first,entity-framework-5,Asp.net Mvc 3,Entity Framework,Asp.net Mvc 4,Ef Code First,Entity Framework 5,当我试图在我的一个关系表中插入新行时,我遇到以下错误。我有以下两种型号: public class CompanyCredit { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int creditId { get; set; } public int planCredit { get; set; } public DateTime? PlanCreditExpira
public class CompanyCredit
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int creditId { get; set; }
public int planCredit { get; set; }
public DateTime? PlanCreditExpirationDate { get; set; }
}
及
在dbContext中的这种关系
modelBuilder.Entity<CompanyInformation>().HasOptional(e => e.Credits);
最后,插入或更新仅将公司标记为已更改,并将_credit标记为已添加,如下所示:
_db.Entry(_credits).State = System.Data.EntityState.Added;
_db.Entry(Company).State = System.Data.EntityState.Modified;
_db.SaveChanges();
当这运行时,我得到了以下错误,我似乎找不到原因
Cannot insert the value NULL into column 'creditId', table 'Project.dbo.CompanyCredits'; column does not allow nulls. INSERT fails.
声明已终止
感谢advanced提供的帮助。在调用saveChanges之前,请尝试颠倒实体状态修改的顺序,好吗
_db.Entry(Company).State = System.Data.EntityState.Modified;
_db.Entry(_credits).State = System.Data.EntityState.Added;
_db.SaveChanges();
我发现问题出在属性
[DatabaseGeneratedOption(DatabaseGeneratedOption.Identity)]
中,这应该是[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
我想我会发布这篇文章,这样其他人可能会从中受益。检查数据库中的id列,它需要显式配置以生成标识值。您好,谢谢您的帮助。我试过了,它给了我同样的错误第一行_db.Entry(Company).State=System.Data.EntityState.Modified;代码是用它编译的吗?它不应该是_db.Entry(_company)。State=System.Data.EntityState.Modifiedhey抱歉,是的,它是这样做的,因为它们位于存储库中,
公司
作为参数传入。这些对编译器来说意味着完全相同的事情。这不可能有什么不同。我相当有信心,如果你把它换回来,它会继续工作,它开始工作的原因确实是你忘记了你换过的东西。:)我尝试过这种方法,但仍然存在错误。我已经在这里发布了我的问题,似乎还没有解决这个问题。H
Cannot insert the value NULL into column 'creditId', table 'Project.dbo.CompanyCredits'; column does not allow nulls. INSERT fails.
_db.Entry(Company).State = System.Data.EntityState.Modified;
_db.Entry(_credits).State = System.Data.EntityState.Added;
_db.SaveChanges();