我有两张桌子。存储id的父表和链接表。父表具有自己的相关数据。这是模特:
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();
它返回自己不相关的人。在我的情况下,它应返回带有ID的人:2,3,4但返回三个ID为1的人
我可以通过MyDbContext.Relation获得我需要的东西但需要MyDbContext.People
我做错了什么? 还有另一种方法吗?
答案 0 :(得分:0)
伊万是对的。您应该使用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();
希望这会有所帮助。