Verhindern einer selbstreferenzierenden Schleifenausnahme mit JSON.Net
Im Prozess der Übertragung einer Liste von Routenobjekten von Ihrem Datendienst an einen In der ASP.Net MVC-Ansicht ist die Ausnahme „Selbstreferenzierende Schleife erkannt“ aufgetreten. Das Unterdrücken der Ausnahme mit ReferenceLoopHandling.Ignore kann zwar den Fehler vorübergehend unterdrücken, löst aber nicht das Problem, dass die Liste nicht an die Ansicht übergeben wird.
Die Hauptursache der Ausnahme liegt in den inhärenten selbstreferenzierenden Strukturen in Ihrem Datenmodell vorhanden sind. Entitäten wie Route und Lot können Beziehungen untereinander pflegen und so Zirkelbezüge erstellen. Wenn JSON.Net versucht, solche Strukturen zu serialisieren, kann es in einer Endlosschleife stecken bleiben, was zu der Ausnahme führt.
Um dieses Problem zu verhindern und eine nahtlose Serialisierung Ihrer Liste zu ermöglichen, ist es notwendig, die automatische Nachverfolgung zu deaktivieren von Entitäten und Proxy-Erstellung in Ihrem Datenkontext. Fügen Sie im Konstruktor Ihrer DbContext-Klasse die folgenden Zeilen hinzu:
this.Configuration.LazyLoadingEnabled = false; this.Configuration.ProxyCreationEnabled = false;
Diese Einstellungen weisen Entity Framework an, Entitäten eifrig zu laden und die Erstellung von Proxy-Objekten zu vermeiden, wodurch die Zirkelverweise effektiv unterbrochen und die Ausnahme verhindert werden. Dadurch kann JSON.Net Ihre Liste erfolgreich serialisieren und die Daten in Ihre Ansicht übertragen.
Das obige ist der detaillierte Inhalt vonWie verhindert man Ausnahmen vom Typ „Selbstreferenzierende Schleife erkannt' beim Serialisieren von Daten mit JSON.Net?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!