У меня есть Silverlight 3 UI, который обращается к службам WCF, которые, в свою очередь, обращаются к репозиториям, использующим NHibernate. Чтобы преодолеть некоторые проблемы отложенной загрузки NHibernate с WCF, я использую свой собственный суррогат DataContract, как описано здесь: http://timvasil.com/blog14/post/2008/02/WCF-serialization-with-NHibernate.aspx. Здесь я устанавливаю preserveObjectReferences = true
Моя модель содержит циклы (т. Е. Клиент с IList [Заказ])
Когда я получаю объект из моего сервиса, он работает нормально, однако, когда я пытаюсь отправить этот же объект обратно в сервис wcf, я получаю сообщение об ошибке:
System.ServiceModel.CommunicationException
был не обработан кодом пользователя
Сообщение = Произошла ошибка во время
пытается сериализовать параметр
http://tempuri.org/:searchCriteria.
Сообщение InnerException было «Объект
graph ... 'содержит циклы и не может
быть сериализованным, если ссылки не
отслеживаются. Рассмотрите возможность использования
DataContractAttribute с
Для свойства IsReference установлено значение true. '
Так что циклические ссылки теперь являются проблемой в Silverlight, поэтому я пытаюсь изменить свой DataContract на [DataContract (IsReference = true)], но теперь, когда я пытаюсь извлечь объект из моего сервиса, я получаю следующее исключение:
System.ExecutionEngineException было обработано сообщение = исключение
тип 'System.ExecutionEngineException'
был брошен. InnerException:
Есть идеи?