Asp.net mvc 使用导航属性实体框架创建新实体时出错

Asp.net mvc 使用导航属性实体框架创建新实体时出错,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我的ASP.NETMVC应用程序中的插入过程有问题。我描述了我的环境,之后我会解释我的问题 我有两个模型类:项目和任务 项目 [Table("Project")] public class Project { [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int ProjectID { get; set; } [Required(ErrorMessage = "Name proj

我的ASP.NETMVC应用程序中的插入过程有问题。我描述了我的环境,之后我会解释我的问题

我有两个模型类:项目和任务

项目

[Table("Project")]
public class Project
{
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int ProjectID { get; set; }
    [Required(ErrorMessage = "Name project required")]
    [StringLength(300, MinimumLength = 1)]
    [DisplayName("Name of Project")]
    public string NameProject { get; set; }

    //Other properties...

    public Project()
    {
        Tasks = new HashSet<Task>();
    }
    public virtual ICollection<Task> Tasks { get; set; }

}
这里是TASKMANAGER,我在这里插入代码来管理dbContext。这是createNewTask函数

这是我的数据库中的快照:

问题是:

当我尝试插入新任务时,系统给我一个错误:*无法为实体“任务”*“Project\u ProjectID”列添加空值

但是,我不明白!!当我调试应用程序时,我可以看到在insert函数中,变量“int projectID”是正确的,行“Project pr=db.Project.Find(projectID)”运行良好,但当它到达“SaveChanges()”时。。。它坠毁了


有人可以帮助我吗?

您需要将以下属性添加到任务实体中: -公共虚拟整数投影

最后,我建议添加如下实体:
-Project.Task.Add(您当前的任务)。

Hi!谢谢你的帮助,但这不管用。我注意到您建议将任务添加到project的任务列表中。但另一件事,不起作用,因为“ProjectId”不是一个列,例外情况告诉我。好了,现在我明白了。我推荐这篇文章来理解CodeFirst中的关系。我的问题是我需要在modelBuilder中添加fluent api配置。非常感谢克努姆德夫
[Table("Task")]
public class Task
{
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int TaskID { get; set; }
    [Required(ErrorMessage = "Task Name required")]
    [StringLength(300, MinimumLength = 1)]
    public string TaskName { get; set; }


    public virtual Project Project { get; set; }

}
public void createTask(Task task,int projectID)
{
    Project pr = db.Project.Find(projectID);        
    task.Project = pr;
    db.Task.Add(task);
    db.SaveChanges();

}