使用 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();
}
}
让我们来看这个场景:
- 我想向项目添加任务。
- 该项目已经存在。
- 任务将作为新实体添加并附加到项目。
- 一个项目可以有一个或多个任务。
这是我现在在我的存储库中执行此操作的方式:
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();
}
}