我有以下类,我在从它们获取数据时遇到问题:
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; }
}
我得到一个目标列表,我想包括 Exam.Name。
这是我创建的查询,因此我可以获得考试,这将为我提供一种获取考试名称的方法。
public IList<Objective> GetObjectives(int examId)
{
var objectives = _objectivesRepository
.GetAll()
.Include(o => o.Exam)
.ToList();
return objectives;
}
这是我正在使用的映射:
public ObjectiveMap()
{
this.HasRequired(t => t.Exam)
.WithMany(t => t.Objectives)
.HasForeignKey(d => d.ExamId)
.WillCascadeOnDelete(false);
}
不幸的是,这个小查询返回了超过 6MB 的数据。当我与 Fiddler 核对时,我看到:
目标对象 > 考试对象 >目标对象
我需要的是:
目标对象 > 考试对象
有没有办法解决这个问题。如何阻止 EF5 获得另一层目标?