EF STE オブジェクト グラフをシリアル化しようとしているときに StackOverflowException に関して以前に書いた投稿の「製図板」に戻りました...ここで説明されているように、IIS7 でスタック サイズを正常に調整できなかった後、私は行くことにしました根本原因を調べる道をたどる...
これは、EF モデルの設計方法に関係していると思います。
簡単に言うと、親エンティティと子エンティティがあります。Child エンティティには、Child.Parent と Child.ParentUsed など、親に戻る 2 つのナビゲーション プロパティがあります。当然、親には 2 つの子コレクションがあります。
StackOverflow 例外の原因となっているデータを詳しく調べたところ、このオブジェクト グラフにはいくつかのサイクルがあることに気付きました。それを証明することはできませんが、サイクルがこの StackOverflow 例外を引き起こしていることはかなり確信しています。
データベースのこのテーブルのデータを削除すると、問題は解決しますが、顧客のマシンのレコードを削除することはできません。設計が悪いかどうかにかかわらず、何らかの形で EF レベルでこれを回避する必要があります。
これを作り直すためのオプションは何ですか? 私の子オブジェクトが親に戻るナビゲーション プロパティを持たず、代わりに 2 つの int Fk を持っていた場合、シリアライゼーションがチョークするサイクルが発生するのではないでしょうか? 1 つのエンティティでナビゲーション プロパティを Fks に変更する方法はありますか?
ありがとう!
アップデート:
子の両方のナビゲーション プロパティを削除して親に戻すと、この問題は解決します。必ずしもサイクルの問題ではないと思いますが、参照をチェックしてサイクルを決定しようとしてスタックが使い果たされている可能性があります。
必ずしも nav プロパティを削除したいわけではありません。それらはクライアントで役立ちます。これを修正するより良い方法はありますか?カスタムシリアライズ?