JSON.Net の「自己参照ループが検出されました」例外
JSON.Net の「自己参照ループが検出されました」例外は、次の場合に発生します。シリアル化されるデータ内の循環参照。提供されたコードでは、オブジェクト グラフ内のループが原因で Route オブジェクトのリストをシリアル化しようとすると、この例外が発生します。
例外の詳細
例外メッセージPartNumber エンティティで自己参照ループが検出されたことを示します。具体的には、パス「routes[0].incomingLots[0].partNumber.partType.partNumbers」にループが含まれており、ルート リストの JSON 表現にはそれ自体への参照が含まれることになります。
この問題を修正してループを防ぐには、DbContext クラスのコンストラクターを変更して遅延読み込みとプロキシを無効にします。 Creation:
public YourDbContext() : base("name = YourDbContext") { // Disable lazy loading and proxy creation this.Configuration.LazyLoadingEnabled = false; this.Configuration.ProxyCreationEnabled = false; }
これを行うことで、関連エンティティを自動的にロードせず、それらのプロキシを作成しないように DbContext に指示します。これにより、循環参照が解除され、ルート リストが正常にシリアル化されるようになります。
以上がオブジェクトのリストをシリアル化するときに JSON.Net で発生する「自己参照ループが検出されました」例外を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。