C# 当我在EF5中包含一个父数据时,有没有一种方法可以避免获得另一个子数据副本?

C# 当我在EF5中包含一个父数据时,有没有一种方法可以避免获得另一个子数据副本?,c#,json,linq,entity-framework,serialization,C#,Json,Linq,Entity Framework,Serialization,我有以下课程,从中获取数据时遇到问题: public partial class Exam { public Exam() { this.Objectives = new List<Objective>(); } public int ExamId { get; set; } public int SubjectId { get; set; } public string Name { get; set; }

我有以下课程,从中获取数据时遇到问题:

public partial class Exam    {
    public Exam()
    {
        this.Objectives = new List<Objective>();
    }
    public int ExamId { get; set; }
    public int SubjectId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public virtual ICollection<Objective> Objectives { get; set; }
}

public partial class Objective    {
    public int ObjectiveId { get; set; }
    public int ExamId { get; set; }
    public string Name { get; set; }
    public string Text { get; set; }
    public virtual Exam Exam { get; set; }
}
不幸的是,这个小查询返回的数据超过6MB。当我与Fiddler核对时,我看到:

目标对象>检查对象>目标对象

我需要的是:

目标对象>检查对象


有没有解决办法。如何阻止EF5获得另一层目标?

JSOn序列化是另一个问题。此处与实体框架无关。您可以使用ScriptIgnore属性来避免序列化它

public partial class Exam    {
 //....
    [ScriptIgnore]
    public virtual ICollection<Objective> Objectives { get; set; }
}

您是否已禁用延迟加载?是的,我已禁用:DbContext.Configuration.LazyLoadingEnabled=false;我认为你没有得到一个新的副本,但它是指同一个对象再次。只有一个例子,就我所见,在Fiddler JSON视图中,我得到了一个目标列表,每个目标都有一个考试。当我查看该考试的内容时,我看到里面有许多客观对象。我猜.Includeo=>o.exam会导致整个考试加载
    public ObjectiveMap()
    {
        this.HasRequired(t => t.Exam)
            .WithMany(t => t.Objectives)
            .HasForeignKey(d => d.ExamId)
            .WillCascadeOnDelete(false);
    }
public partial class Exam    {
 //....
    [ScriptIgnore]
    public virtual ICollection<Objective> Objectives { get; set; }
}