Ошибка LINQ to SQL ForeignKeyReferenceAlreadyHasValueException
Эта ошибка генерируется, когда я пытаюсь изменить внешний ключ.
Я знаю, что это очень распространенная ошибка. Я обнаружил массу информации об этом и попытался реализовать исправления, обнаруженные Ive, но я все еще получаю эту ошибку при попытке обновить ключи. Справочная тема
Первоначально я просто назначал значение и не пытался отображать объекты.
ticket.assigned_to_group = assigned_to
Ive с тех пор изменилось, чтобы попытаться сопоставить сущности, на которые я верю правильный ответ; однако я все еще получаю ошибку.
ticket.assigned_to_group = db.sub_units.Single(f => f.id == assigned_to).id;
Любая идея, почему это не сработает. Кроме того, если у меня есть таблица с несколькими внешними ключами, мне действительно нужно сделать новый запрос для каждого ключа или есть лучший способ?
Ответы
Ответ 1
Я думаю, вы пытаетесь присвоить идентификатор, когда вам нужно назначить сущность. (Я не уверен на 100%, это то, что вы делаете)
// Don't assign just the id
Person.ParentId = parentId;
// Assign the entity
Person.Parent = db.Parents.Single(x.Id == parentId);
Ответ 2
Для вашего второго вопроса вы можете загрузить все sub_units с помощью
var groups = db.sub_units.ToArray()
и один раз в памяти сделайте что-то вроде этого:
foreach(var ticket in tickets)
{
ticket.assigned_to_group = groups.Single(f => f.id == assigned_to);
}