EF 孙子单排

本文关键字:单排 EF | 更新日期: 2023-09-27 18:34:11

我有一个有孙子的关系

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 通过实体框架 6 对房间和人员进行查询。当有多个记录时,我只会为 Person 取回 1 条记录。 当我运行生成的 SQL 时,我看到了应该包含的所有人,但我在输出中看不到他们。

EF 孙子单排

我看到在这种情况下发生了什么,我确实在我的示例中屏蔽了实际的表和字段名称,以使项目处于保密状态。 这与说非主键是键并将主键从类中删除有关。 我纠正了这一点,所有记录都开始显示。 我想EF只会显示表的唯一键的第一条记录?