Asp.net mvc 使用导航属性实体框架创建新实体时出错
我的ASP.NETMVC应用程序中的插入过程有问题。我描述了我的环境,之后我会解释我的问题 我有两个模型类:项目和任务 项目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
[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();
}