Entity framework ASP.NET MVC 4更新外键表
我的数据库中有两个表项目和任务一个项目可能有多个任务,因此它在任务列中插入了任务ID。创建新项目时,任务列将为空,可为空。然而,当创建新任务时,我希望通过将新创建的任务Id添加到“任务”列来获取任务Id并修改项目表。在MVC4中,我如何做到这一点?如果您愿意,您可以始终采用这种方法,因为项目有许多任务。我已经为您创建了模型Entity framework ASP.NET MVC 4更新外键表,entity-framework,asp.net-mvc-4,Entity Framework,Asp.net Mvc 4,我的数据库中有两个表项目和任务一个项目可能有多个任务,因此它在任务列中插入了任务ID。创建新项目时,任务列将为空,可为空。然而,当创建新任务时,我希望通过将新创建的任务Id添加到“任务”列来获取任务Id并修改项目表。在MVC4中,我如何做到这一点?如果您愿意,您可以始终采用这种方法,因为项目有许多任务。我已经为您创建了模型 public class Project { public int Id { get; set; } public virtual ICollection&
public class Project
{
public int Id { get; set; }
public virtual ICollection<ProjectTask> ProjectTasks { get; set; }
}
public class ProjectTask
{
public int ProjectId { get; set; }
public int TaskId { get; set; }
public virtual Project Project { get; set; }
public virtual Task Task { get; set; }
}
public class Task
{
public int Id { get; set; }
public string Description { get; set; }
public virtual ICollection<ProjectTask> ProjectTasks { get; set; }
}
如果这听起来像你要做的,我已经附上了一些关于在实体框架中设置存储库模式的阅读资料
进一步阅读
我认为您的设计有问题。如果一个
项目
可以有许多任务
,那么项目
表应该不知道任务
。每个任务
都应该有一个ProjectId
字段,该字段存储与其关联的项目
的ProjectId
。当然,任务表有一列名为Project\u ID,但是当我为名为“我的项目”的项目创建ID=7的新任务时,以及当我看到项目表时,在“项目任务”列下,任务ID为0而不是7。项目
表不应包含任何类型的任务
列。如果要查看与项目
关联的任务
,需要在项目
表中的项目
上的两个表之间执行联接
(来自任务
表),该联接等于项目
表中的项目
。是否使用实体框架?
var task = new Task() {Description = "My new task"};
Project project = ProjectRepository.FirstOrDefault();
if (project != null)
{
project.ProjectTasks.Add(new ProjectTask(){Task = task});
ProjectRepository.SaveChanges();
}