Ich habe viele frühere Lösungen für dieses Problem gelesen, aber keine funktionierte für mich.Selbstreferenzierungsschleife erkannt
Ich habe eine kreisförmige Beziehung zwischen Ereignis und Benutzerobjekt:
public class Event : EntityData
{
[Required]
[ForeignKey("Creator")]
public string CreatorId { get; set; }
public User Creator { get; set; }
[InverseProperty("ParticipantIn")]
public virtual ICollection<User> Participants { get; set; }
[InverseProperty("ManagerIn")]
public virtual ICollection<User> Managers { get; set; }
}
Wie Sie Ich habe drei Referenzen auf Benutzer von dieser Klasse sehen können: Ereigniserzeuger, Liste der Manager, und die Teilnehmerliste.
Die Benutzerklasse Verweise auf Ereignis enthält auch:
public class User: EntityData
{
[InverseProperty("Participants")]
public virtual ICollection<Event> ParticipantIn { get; set; }
[InverseProperty("Managers")]
public virtual ICollection<Event> ManagerIn { get; set; }
}
Nun ist das Problem, dass wenn ich versuche, ein Ereignis zu serialisiert, wie in meiner create Funktion, es sagt mir, dass es eine Selbst Referenzierung Schleife, denn wenn das Ereignis erstellt wird, füge ich es der 'ManagerIn'-Sammlung des Erstellers hinzu.
Diese Zeile verursacht Event-> Schöpfer-> ManagerIn-> Event-> Creator -> ..... LOOP
Ich versuchte alles, ich hatte auch eine Version dieses Codes mit öffentlichen virtuellen Benutzer Creator, um es gemächlich zu machen zu laden ..
Denn jetzt ist meine Lösung nicht sehr elegant, bevor das Ereignis an den Client zurückgegeben ich ausführen:
event.Creator = null;
und
event.Managers = null;
um eine selbstreferenzierende Schleife zu vermeiden.
Was ist der richtige Weg, um diese Art von Problem zu lösen?
Vielen Dank im Voraus, Liran!
Was verwenden Sie, um es zu serialisieren? – Evk
Wenn Sie XML verwenden http://stackoverflow.com/questions/5004397/is-it-possible-to-perform-serialization-with-circular-references relevant sein – Chris
http://stackoverflow.com/questions/ 26434738/wie-do-you-wirklich-serialize-Kreisverweis-Objekte-mit-newtonsoft-json von Interesse für json – Chris