2

EntityFrameworkについて質問があります。私たちのプロジェクトでは、次のような循環参照が必要になります。

public class OptionClusterSet
{
    public int ID { get; set; }

    public virtual ICollection<OptionCluster> OptionClusters { get; set; }
}

public class OptionCluster
{
    public int ID { get; set; }

    public long OptionClusterSetId { get; set; }

    public virtual OptionClusterSet OptionClusterSet { get; set; }
}

たとえば、積極的な読み込みを使用してOptionClustersを含むOptionClusterSetを取得しようとすると、OptionClustersはOptionClusterSetsなどを読み込もうとします。したがって、無限ループが発生します。

正しく動作するようにこれを構成する方法はありますか?

4

1 に答える 1

1

シリアル化しようとしない限り、箱から出して正しく動作します。シリアル化には、シリアライザーが循環参照を認識できるようにするための特別な処理(属性)が必要です。

積極的な読み込みでは、Include呼び出しで指定したレベルのみが読み込まれ、それ以上は読み込まれません。他のすべては遅延読み込みで読み込むことができますが、EFは既に読み込まれたリレーションを再度読み込むことはありません。期待どおりに機能しないシナリオがいくつかあります。たとえば、POCOジェネレーターでのナビゲーションプロパティの修正です(逆ナビゲーションプロパティを修正するために追加データを遅延ロードします)。

于 2012-08-17T19:54:13.367 に答える