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