Проблема обновления отношения внешнего ключа в EF 4.0 путем установки идентификатора - PullRequest
0 голосов
/ 23 мая 2011

Я пытаюсь обновить отношение внешнего ключа в EntityFramework 4 (с базой данных Microsoft SQL Server) через внешний ключ.

Я загружаю объект, используя .Single(), а затем пытаюсь установить вObject.ExampleId (Пример таблицы является справочной таблицей, которая соответствует перечислению в C #).Затем я вызываю SaveChanges() в контексте.

Это работает локально, но на производственных серверах происходит сбой и, кажется, зависает.Используя операторы отладки, я сузил область ожидания до строки, где я фактически установил Id.

Я смог решить проблему, загрузив весь объект Example и выполнив Object.Example = loadedExample вместо Object.ExampleId = exampleId.

Мой вопрос: почему это так?В других местах мне удалось обновить отношения, просто установив Id.Это плохая практика?

1 Ответ

1 голос
/ 21 июня 2011

Проблема оказалась в том, что установка идентификатора FK заставила платформу сущностей загрузить все члены отношения внешнего ключа, которые имели этот идентификатор. На наших промежуточных и живых серверах количество элементов в этих отношениях было намного выше.

Это вызвало тайм-аут запроса и сбой.

Решение было здесь: EF4 и нежелательная загрузка связанной коллекции с AddObject

...