Ошибка 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);
}