1

我有以下类,我在从它们获取数据时遇到问题:

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 获得另一层目标?

4

1 回答 1

0

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

public partial class Exam    {
 //....
    [ScriptIgnore]
    public virtual ICollection<Objective> Objectives { get; set; }
}
于 2013-08-05T04:46:36.967 回答