Есть такие сущьности как Person, Title, их генерированные псевдо-классы выглядят примерно так:
Person {
Guid ID {get ;set; }
String Name { get; set; }
Guid TitleID { get; set; }
Title Title { get; set; }
}
Title {
Guid ID { get; set; }
String TitleName { get; set; }
}
Есть объект Person (новая или изменяемая — не известно), у него установлен объект Titel (в базе данных присутствует или является null).
Эти объекты отаттачены от контекста.
Нужно выполнить сохранение. Как не кручу, не выходит у меня, выполнить эту операция:
Ошибка повреждения PRIMARY KEY 'aaaaaTitle_PK'. Двойной ключ не может быть добавлен в dbo.Title-oбъект.
Для сохранения объектов есть метод SavePerson(Person p). В нем создается свеженький контекст ctx. Затем пытаюсь добавить объект или перенять его новые значения:
Person pp = ctx.PersonenSet.SingleOrDefault(x => x.ID == p.ID);
if (pp == null)
ctx.PersonenSet.AddObject(p); // new
else
ctx.PersonenSet.ApplyCurrentValues(p); // edit
Если просто выполнить ctx.SaveChanges(), вываливается выше описанная ошибка.
Как мне задать правильно title? Не могу понять что делать?