Сериализация XML объектов Entity - PullRequest
3 голосов
/ 16 февраля 2011

Я пытаюсь сериализовать и граф объектов EF 4.0 в XML для передачи через службу WCF.В прошлом я делал это с DTO / POCO (обычно для сериализации JSON).В этом случае, поскольку я выполняю только сериализацию XML, казалось, что я должен иметь возможность напрямую сериализовать объекты сущностей, однако я сталкиваюсь с этой загадкой:

  1. Если я не отсоединяюсьпри сериализации выдается ошибка, из-за которой контекст объекта был удален (потому что он имел в этой точке, так что это ожидаемо).

  2. Если я отсоединяю сущность, любые связанные объекты загружаются всвойства навигации удалены.

Я ожидал, что если бы я перечислил какие-либо связанные сущности, а затем отсоединил объект от контекста, у меня все еще были бы эти отношения, доступные для сериализации.

Итак, мой вопрос, есть ли способ напрямую сериализовать объект-сущность и сохранить какие-либо загруженные свойства / коллекции навигации?

Спасибо ...

1 Ответ

1 голос
/ 18 февраля 2011

При сериализации объекта сериализатор будет обходить весь граф объектов.

  • Если ваш объект присоединен, он будет принудительно загружать каждую ленивую загрузку навигации.Таким образом, если ваш контекст будет удален, вы получите исключение.
  • Согласно msdn , когда элемент в свойстве навигации отсоединен, он больше не отображается в навигацииимущество.Я думаю, что то же самое происходит при отсоединении объекта и доступе к его свойству навигации.

Я думаю, что вы должны сделать DTO / POCO из вашего объекта-сущности перед сериализацией.Однако вам стоит взглянуть на automapper , который поможет вам преобразовать ваш объект из сущности в DTO и обратно.

...