使用Entity Framework将元素添加到另一个现有实体

时间:2016-01-22 17:00:12

标签: entity-framework repository-pattern code-first

我们来看看这个场景:

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

这就是我现在在我的存储库中执行此操作的方式:

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();
    }
}

1 个答案:

答案 0 :(得分: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();
   }
 }