トラブルシューティング "json.netエラー:自己参照ループが検出されました」エンティティフレームワーク
エンティティフレームワークで生成されたクラスをJsonConvert.SerializeObject
>「自己参照ループ検出」エラーをトリガーできます。これは、エンティティフレームワークのナビゲーションプロパティが循環参照を作成するためです。 修正方法は次のとおりです
を構成することが含まれます:JsonSerializerSettings
(デフォルト):ReferenceLoopHandling.Error
これは例外をスローします。現在経験している動作です。
:これにより、ネストされたオブジェクトのシリアル化が可能になりますが、無限の再帰を防ぎます。 ほとんどの場合にこれを使用してください。ReferenceLoopHandling.Serialize
:これにより、循環参照に伴うオブジェクトがスキップされます。 重要なデータを省略する可能性があるため、慎重に使用してください
ReferenceLoopHandling.Ignore
を使用しています
ReferenceLoopHandling.Serialize
<code class="language-csharp">JsonConvert.SerializeObject(YourPOCOHere, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Serialize });</code>
非常に複雑で深くネストされた構造の場合、はまだ
につながる可能性があります。このようなシナリオでは、:ReferenceLoopHandling.Serialize
を使用します
StackOverflowException
PreserveReferencesHandling.Objects
このアプローチでは、JSON参照を使用して、データの重複を避け、スタックオーバーフローエラーを引き起こすことなく円形の依存関係を効果的に処理します。 データ構造の複雑さに最適なアプローチを選択してください。
以上がjson.netを使用してエンティティフレームワークPocosをシリアル化するときに「セルフ参照ループ検出」エラーを解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。