EF Grandchildren Single Row

时间:2014-12-15 06:11:53

标签: c# entity-framework odata

我有一个有孙子的关系

public class School {
  [Key]
  public int SchoolId {get; set;}
  public string Name {get;set;}

  public virtual ICollection<Room> {get;set;}
}

public class Room {
  [Key]
  public int RoomId {get;set;}
  public string Number {get;set;}
  public int SchoolId {get;set;}
  [ForeignKey("SchoolId")]
  public virtual School School {get;set;}
  public virtual ICollection<Person> People {get;set;}
}

public class Person {
    [Key]
    public int Id {get; set;}
    public string Name {get;set;}
    public int RoomId {get;set;}
    [ForeignKey("RoomId")]
    public virtual Room Room {get;set;}
}

我正在尝试加载房间的所有记录,但即使学校有多个房间,我也只能获得一个房间。我正在返回一个IQueryable for School,并允许oData通过Entity Framework 6查询Room和Person。当有多个时,我只返回1个记录。当我运行生成的SQL时,我看到应该包含的所有人,但我没有在输出中看到它们。

1 个答案:

答案 0 :(得分:0)

我看到在这种情况下发生了什么我在我的示例中屏蔽了实际的表和字段名称以保持项目的包装。它与说非主键是关键并使主键脱离类。我纠正了这一点,并开始显示所有记录。我想EF只会显示表格中唯一键的第一个记录吗?