Циркулярные ссылки и WCF

Я сгенерировал свои объекты POCO с помощью генератора POCO, в моей базе данных более 150 таблиц. Я разделяю объекты POCO на всех уровнях приложения, включая клиента. Я отключил в своем контексте и LazyLoading, и ProxyCreation. Я использую WCF поверх доступа к данным и бизнес-уровня.

Теперь, когда я возвращаю объект poco своему клиенту, я получаю сообщение об ошибке: « Базовый соединение было закрыто " Я включил трассировку WCF и обнаружил точную ошибку: Содержит циклы и не может быть сериализован, если отслеживание ссылок отключено.

Я просмотрел MSDN и нашел решения, такие как установка IsReference = true в DataContract атрибут метода, но я не украшаю свои классы POCO с помощью DataContracts и предполагаю, что в этом нет необходимости. Я не буду называть это POCO, если я украсю класс атрибутом DataContract

Затем, Я нашел такие решения, как применение настраиваемого атрибута [CyclicReferenceAware] к моим ServiceContracts. Это действительно сработало, но я хотел задать этот вопрос сообществу, чтобы узнать, как другие люди справились с этим, а также почему Microsoft не предоставила встроенную поддержку для определения циклических ссылок, пока сериализация классов POCO

6
задан Kunal Uppal 2 November 2011 в 22:33
поделиться