Dieses Problem geistert seit Jahren im Netz herum, ich habe noch keine gute Lösung gefunden. Das Thema ist die Übergabe einer Liste von Objekten, die eine zirkuläre Referenz in sich haben, die von NHibernate gefüllt wird (mit oder ohne Lazy Load - einige Seiten sagen, dass es mit Lazy nicht möglich ist)
Hier ist das Beispiel:
[DataContract]
class Person
{
[DataMemeber]
string Name
[DateMember]
IList<Child> myChilds;
}
[DataContract]
class Child
{
[DataMemeber]
string Name
[DateMember]
Person Father
}
Wenn ich versuche, alle Personen in meiner DB zu erhalten: Der Servercode wird sein:
ICriteria crit = session.CreateCriteria(typeof(Person)));
IList<Base> queryResult = crit.List<Base>();
Ich erhalte ein gutes Ergebnis auf der SERVER SIDE- eine Liste aller Personen, und innerhalb jeder Person erhalte ich eine Liste aller Söhne (und innerhalb jedes Sohnes - ich erhalte ein Objekt der Person, die innerhalb eine Liste seiner Söhne ect.... hat)
Der Versuch, diese Liste über WCF abzurufen, führt zu Fehlern im Kanal. (wenn ich die Person Objekt aus dem Kind zu entfernen - es funktioniert gut).
Lösungen, die ich ausprobiert habe, haben dieses Problem nicht gelöst: Hinzufügen von IsReference=true zu [DataContract] - hat nicht geholfen. Verschieben Sie alle die Zuordnung zu not.Lazyload() - hat nicht geholfen.
Irgendwelche Ideen, wie man dies lösen, ohne WCF neu zu schreiben?
Danke! Dani