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

Add an element to another existing entity using Entity Framework

让我们来看这个场景:

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

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

你可以试试:

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