В книге " Entity Framework 4 в действии ", в разделе 16.1.3 и снова в 16.2.4, указано
Если у вас есть экземпляр прокси, не забудьте отключить отложенную загрузку перед
сериализации, или вы в конечном итоге отправите нежелательные данные клиенту.
Однако авторы никогда не говорят, как отключить отложенную загрузку. В своих собственных поисках я слышал о ContextOptions.LazyLoadingEnabled. Это «путь» это сделано? Есть ли более одного способа (кроме отключения прокси)?
Я прочитал в одной статье , что флаг LazyLoadingEnabled относится только к объектам EntityObject, а не к объектам POCO:
Отключение отложенной загрузки теперь позволяет сериализовать ваши классы.
должным образом. Обратите внимание, это если вы используете стандартную сущность
Каркасные классы. Если вы используете POCO, вам придется сделать
что-то немного другое.
В POCO Entity Framework по умолчанию создает прокси-классы.
которые позволяют таким вещам, как ленивая загрузка, работать с POCO. Это прокси
в основном создает прокси-объект, который является полной Entity Framework
объект, который находится между контекстом и объектом POCO. Когда используешь
POCO с WCF (или любой сериализацией) просто отключая ленивую загрузку
не разрезает это. Вы должны отключить создание прокси, чтобы
что ваши классы будут сериализованы правильно
Я подозреваю, что приведенный выше комментарий просто ошибочен.