LINQ to SQL ForeignKeyReferenceAlreadyHasValueException error - PullRequest
14 голосов
/ 24 февраля 2010

Эта ошибка генерируется, когда я пытаюсь изменить внешний ключ. Я знаю, что это очень распространенная ошибка. Я нашел тонны информации о ней и попытался внедрить найденные исправления, но я все еще получаю эту ошибку при попытке обновить ключи. Ссылочная тема

Первоначально я просто присваивал значение и не пытался отобразить сущности.

ticket.assigned_to_group = assigned_to

С тех пор я изменился, чтобы попытаться отобразить сущности, которые, как я считаю, являются правильным ответом; однако я все еще получаю ошибку.

ticket.assigned_to_group = db.sub_units.Single(f => f.id == assigned_to).id;

Любая идея, почему это не сработает. Также, если у меня есть таблица с несколькими внешними ключами, действительно ли мне нужно делать новый запрос для каждого ключа или есть лучший способ?

Ответы [ 2 ]

35 голосов
/ 24 февраля 2010

Я думаю, что вы пытаетесь назначить идентификатор, когда вам нужно назначить объект. (Я не уверен на 100%, что вы делаете)

// Don't assign just the id
Person.ParentId = parentId;

// Assign the entity
Person.Parent = db.Parents.Single(x.Id == parentId);
0 голосов
/ 24 февраля 2010

По второму вопросу вы можете загрузить все подузлы на

var groups = db.sub_units.ToArray() и один раз в памяти сделать что-то вроде этого:

foreach(var ticket in tickets)
{
    ticket.assigned_to_group = groups.Single(f => f.id == assigned_to);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...