Эта проблема всплывает в сети в течение многих лет, но я пока не нашел хорошего решения.
В теме передается список объектов, внутри которых есть циклическая ссылка, заполненная NHibernate (с ленивой загрузкой или без нее - некоторые сайты говорят, что это невозможно сделать с ленивой)
Вот пример:
[DataContract]
class Person
{
[DataMemeber]
string Name
[DateMember]
IList<Child> myChilds;
}
[DataContract]
class Child
{
[DataMemeber]
string Name
[DateMember]
Person Father
}
Когда я пытаюсь собрать всех людей в моей базе данных:
Код сервера будет:
ICriteria crit = session.CreateCriteria(typeof(Person)));
IList<Base> queryResult = crit.List<Base>();
Я получаю хорошие результаты на СТОРОНЕ СЕРВЕРА - Список всех людей, и внутри каждого человека я получаю Список всех сыновей (а внутри каждого сына - я получаю объект Person, у которого внутри есть Список его сыновья т. д ....)
Теперь попытка получить этот список через WCF приводит к сбою канала.
(если я удаляю объект Person из дочернего объекта - он работает нормально).
Решения Я пробовал и не решил эту проблему:
добавление IsReference = true к [DataContract] - не помогло.
Перемещение всего отображения в not.Lazyload () - не помогло.
Есть идеи, как решить эту проблему без переписывания WCF?
Спасибо,
Dani