2016-01-22 141 views
1
元素添加到其他现有实体

让我们这样的场景:使用实体框架

  • 我想添加一个任务到项目。
  • 该项目已经存在。
  • 任务将作为新实体添加并附加到项目中。
  • 一个项目可以有一个或多个任务。

这是我做的,现在我的仓库方式:

public void AddTaskToProject(Project ProjectToUpdate,Task TaskToAdd) 
{ 
    using (var context = new myContext()) 
    { 
     var project= context.Projects.First(x => x.Id == projectToUpdate.Id); 
     project.Tasks.Add(taskToAdd); 
     context.Tasks.Add(taskToAdd); 

     SaveContextChange(context); 
    } 
} 

是否有任何其他的方式,以避免像我一样到数据库尽可能多的电话吗?

对我来说,理想的是更新项目,然后只调用项目实体的更新?有没有办法做到这一点 ?

这是一般的更新我:

public virtual void Update(params T[] items) 
{ 
    using (var context = new MyContext()) 
    { 
     foreach (T item in items) 
     { 
      context.Entry(item).State =EntityState.Modified; 
     } 

     context.SaveChanges(); 
    } 
} 

回答

0

你可以试试:

public void AddTaskToProject(Project projectToUpdate,Task taskToAdd) 
{ 
    using (var context = new myContext()) 
    { 
    var project = new Project() { ProjectId = projectToUpdate.Id }; 
    context.Projects.Attach(project); 
    project.Tasks.Add(taskToAdd); 
    context.SaveChanges(); 
    } 
}