Установить идентификатор связанной сущности на отдельном прокси-сервере POCO - PullRequest
0 голосов
/ 15 марта 2011

У меня есть отсоединенный прокси-сервер POCO от EF 4.0 (отсоединенный означает, что ObjectContext удалил).

У меня есть свойство MyRelatedEntityId, которое является FK для свойства навигации MyRelatedEntity.

Когда это происходит, я знаю, какое значение я хочу установить для MyRelatedEntityId, поэтому я пытаюсь установить его вручную .... но отсоединенный прокси-сервер POCO выдает исключение, которое ObjectContext уже удалил.

Как я могу это сделать или есть обходной путь для этого?

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Вы отключили объект до удаления ObjectContext? Вы пытались установить его после присоединения объекта к новому ObjectContext?

1 голос
/ 15 марта 2011

Вы должны отключить ленивую загрузку. Я думаю, что как только вы установите свойство FK, динамический прокси-сервер будет пытаться загрузить связанный объект, и он не будет работать из-за удаленного контекста.

Edit:

Я только что проверил эту проблему, потому что, как вы упомянули, отложенная загрузка не должна запускаться. Проблема заключается в автоматически сгенерированном коде, который использует методы Fixup для установки двунаправленного отношения. Если вы загрузили предыдущую связанную сущность и изменили FK, она устанавливает для связанной сущности значение NULL. Это вызывает метод fixup, который пытается удалить текущий объект из дочерних объектов предыдущего связанного объекта. Если вы не загрузили их до удаления контекста, вы получите исключение. Просто попробуйте отладить код, включая сгенерированный.

Решение может быть:

  • Отключить отложенную загрузку для этого сценария
  • Удалить навигационную коллекцию из связанной сущности
  • Изменить шаблон T4, чтобы он не генерировал методы исправления
...