通过相关表获取所有相关对象。实体框架

时间:2016-02-11 07:34:39

标签: asp.net-mvc entity-framework linq ef-fluent-api

我有两张桌子。存储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; }
}

一些测试数据enter image description here 并像这样映射它们

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

我做错了什么? 还有另一种方法吗?

1 个答案:

答案 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();

希望这会有所帮助。