LINQ to SQL クラスをシリアル化するときの循環参照例外
-
13-09-2019 - |
質問
linq to sql クラスのセットがあり、.NET JavaScriptSerializer を使用してそれらを JSON にシリアル化しました。
ただし、関連テーブルにレコードを追加するとすぐに、シリアル化によって「循環参照例外」がスローされます。ああああ!
詳しく説明されてるよ ここ.
いくつかの選択肢があります
- linq to sql クラスを関係のないクラスに変換し、循環参照を回避します。
- 関連を無効にして循環参照を切り取る - これが実際のオプションとは考えていません
- (何らかの方法で) ScriptIgnoreAttribute を使用します。プロパティは生成されたクラス内にあり、LINQ to SQL はバディ クラスを自動的に尊重しないため、これを簡単に適用することはできませんでした。
- JSON.NET を使用し、何らかの方法で属性とバディ クラスを使用して、シリアライザーがリレーションシップを横断しようとするのを停止します。
他にこれに遭遇した人はいますか?可能であれば最後のオプションを選択したいのですが、これを行う方法がわかりません。
助けていただければ幸いです
解決
Json.NETの最新バージョンは、円形の関係をシリアル化をサポートしています。チェックアウトヘルプのオブジェクト参照をを保存ます。
他のヒント
ジェームズのソリューションは、私の問題の一部を解決しました。私は、オブジェクト内の特定のリストのタイプを除外するために必要な。私の問題を解決するために、私はちょうど私が必要なオブジェクトの一部をコピーしました。以下は一例である。
var DB = new DBDataContext();
var lUsers = new List<User>();
DB.Users.ToList().ForEach(x => lUsers.Add(new User()
{
ID = x.ID,
FIRST_NAME = x.FIRST_NAME
}) );
所属していません StackOverflow