2

我有一个关于实体框架的问题。在我们的项目中,我们需要有一些循环引用,比如这个:

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; }
}

问题是,例如,每当我们尝试使用 eager loading获取包含其 OptionCluster的 OptionClusterSet 时,OptionCluster 都会尝试加载其 OptionClusterSets 等等。所以我们得到一个无限循环。

有没有办法配置它以使其正常工作?

4

1 回答 1

1

除非您尝试对其进行序列化,否则它开箱即用即可正常工作 - 序列化需要一些特殊处理(属性)以让序列化程序识别循环引用。

急切加载仅加载您在Include调用中指定的级别,仅此而已。其他所有内容都可以通过延迟加载加载,但 EF 不会再次加载已加载的关系。在某些情况下它无法按预期工作 - 例如 POCO 生成器中的导航属性修复(它会延迟加载额外的数据以修复反向导航属性)。

于 2012-08-17T19:54:13.367 回答