Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 实体框架正在使插入时的id为空_Asp.net Mvc 3_Entity Framework_Asp.net Mvc 4_Ef Code First_Entity Framework 5 - Fatal编程技术网

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();