通过related table获取所有相关对象。 Entity Framework

Getting all related objects via related table. Entity Framework

我有两个 table。存储 ID 的父级 table 和 link table。 Parent table 有自己的相关数据。这是模型:

public class People
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }   
public List<Relation> Relations { get; set; }
}

public class Relation
{
public int Id { get; set; }
public int ParentPeopleID { get; set; }
public int ChildPeopleID { get; set; }   
public People People { get; set; }
}

部分测试数据 并像这样映射它们

HasRequired(p => p.People).WithMany(p => p.Relations).HasForeignKey(p => p.ParentPeopleID);

当我打电话时

var Peoplelist = MyDbContext.People.Include(p=>p.Relations.Select(r=>r.People)).Where(p=>p.Id==1).ToList();

它returns本身与人无关。在我的例子中,它应该 returns id 为 2,3,4 的人,但是 returns 三个 id 为 1 的人

我可以通过 MyDbContext.Relation 获得我需要的东西,但需要通过 MyDbContext.People

我做错了什么? 还有其他方法吗?

伊万说得对。您应该使用 join 关键字来连接两个表,如下所示。通过使用此查询,您将获得所需的结果(ID 为 2、3、4 的人):

var Peoplelist = MyDbContext.Peoples.Join(MyDbContext.Relations, p => p.Id, r => r.ChildPeopleID, 
            (p, r) => new {p, r})
            .Where(j => j.r.ParentPeopleID == 1).ToList();

希望这会有所帮助。