Сначала я использую код EF6 в приложении WPF.У меня есть раздел, который позволяет пользователю либо обновить, либо добавить новую задачу.Задачи и Люди имеют отношения многие ко многим.Вот часть кода, в которой я пытаюсь фактически добавить новую задачу (или обновить существующую) в базу данных:
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
Теперь, когда я добавляю новую задачу, все идетхорошо, за исключением того, что он добавляет уже существующих людей в таблицу людей с новыми номерами идентификаторов (хотя у них уже есть идентификаторы).Я намерен просто связать людей с задачей, а не добавлять их снова.
У меня нет модели для таблицы соединений, поэтому я не могу просто добавить туда новые строки.Кроме того, если это важно, я отключил создание прокси-сервера (поскольку я извлекал данные, закрывал контекст, связывался с ним, а затем вставлял обратно, создавал всевозможные ошибки контекста)