Я столкнулся с проблемой при попытке обновить поле внешнего ключа:
record.ForeignId = newId;
Он запускает бомбу с помощью «Операция» недействителен из-за текущего состояния объекта "из-за кода SQLMetal, который выдает System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException ()
.
Я не был первым, кто столкнулся с этой проблемой:
Ошибка LinqToSQL: операция недопустима из-за текущего состояния объекта и http://social.msdn.microsoft.com/ форумы / en-US / linqtosql / thread / f9c4a01a-195a-4f2b-a1cb-e2fa06e28b25 / обсуждают это, среди прочего.
Их решение таково:
record.Foreign = Database.Foreigns.Single(c => c.Id == newId);
Это, конечно, вызывает поиск в БД по Foreign только для того, чтобы вернуть объект с уже известным мне идентификатором! Итак, как мне выполнить это обновление без бессмысленных запросов (или запросов, если у меня много этих FK)?