尝试在Entity Framework中关联现有行时添加新行

时间:2018-12-02 02:43:28

标签: entity-framework entity-framework-6 ef-code-first

我首先在WPF应用中使用EF6代码。我有一个部分,允许用户更新或添加新任务。任务和人员之间存在多对多关系。这是我试图在其中将新任务(或更新现有任务)实际添加到数据库的代码部分:

using (TESterContext context = new TESterContext())
{
    if (TaskToEdit.Id == 0)
    {
        TaskToEdit.CreatedDatetime = DateTime.Now;
        TaskToEdit.CreatedById = AppState.CurrentUser.Id;
        TaskToEdit.Completed = false;
        TaskToEdit.Archived = false;
        context.Tasks.Add(TaskToEdit);
        context.SaveChanges();
        TaskToEdit = context.Tasks.
            Include(pa => pa.PeopleAssigned).
            SingleOrDefault(tk => tk.Id == TaskToEdit.Id);
    }
    else
    {
        TaskToEdit.PeopleAssigned.Clear();
        context.Entry(TaskToEdit).State = EntityState.Modified;
        context.SaveChanges();
    }
    foreach (Person per in AssignedPeople)
    {
        TaskToEdit.PeopleAssigned.Add(per);
    }
    int response = context.SaveChanges();
    etc

现在,当我添加一个新任务时,一切都会进行得很顺利,除了它将已经存在的人员添加到具有新ID号(即使他们已经具有ID)的人员表中。我希望它只是使人们与任务相关,而不是再次添加他们。

我没有用于联接表的模型,所以我不能仅在其中添加新行。另外,如果重要的话,我已经关闭了代理的创建(因为我要拉出数据,关闭上下文,弄乱数据然后再放回去,这会创建各种不同的上下文错误)

0 个答案:

没有答案