2016-01-22 143 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(); 
    } 
}