'SubSonic.Schema .DatabaseColumn' タイプのオブジェクトをシリアル化中に循環参照が検出されました。質問する

'SubSonic.Schema .DatabaseColumn' タイプのオブジェクトをシリアル化中に循環参照が検出されました。質問する

単純な JSON リターンを実行しようとしていますが、以下のような問題が発生しています。

public JsonResult GetEventData()
{
    var data = Event.Find(x => x.ID != 0);
    return Json(data);
}

この質問のタイトルにあるように、例外とともにHTTP 500が発生します。また、

var data = Event.All().ToList()

それは同じ問題を引き起こしました。

これはバグでしょうか、それとも私の実装の問題でしょうか?

ベストアンサー1

オブジェクト階層に、JSON シリアライザーでサポートされていない循環参照があるようです。すべての列が必要ですか? ビューで必要なプロパティのみを選択できます。

return Json(new 
{  
    PropertyINeed1 = data.PropertyINeed1,
    PropertyINeed2 = data.PropertyINeed2
});

これにより、JSONオブジェクトが軽くなり、理解しやすくなります。プロパティが多数ある場合は、オートマッパー使用できる自動的にDTO オブジェクトと View オブジェクト間のマップ。

おすすめ記事