多个Include / ThenInclude在EF Core中导致重复

时间:2017-06-20 06:08:54

标签: sql-server entity-framework .net-core entity-framework-core

好的,所以我有一个表格建筑,其中包括该建筑物中的所有人员。但是,每个Person都有一个专业,它本身就是一个实体,根据可用的内容添加到Person实体中。

var data = _dbcontext.Building
        .Where(m => m.BuildingId == buildingId)
        .Include(x => x.Person).ThenInclude(x => x.Doctor)
        .Include(x => x.Person).ThenInclude(x => x.Teacher)
        .Include(x => x.Person).ThenInclude(x => x.Farmer)
        .Include(x => x.Person).ThenInclude(x => x.Prostitute);

这就是我在网上发现的方式,但它实际上似乎包括了Person实体4次,所以我有大量重复。我真的只想要一次,但我想离开加入专业实体。

外键都设置正确,我使用EF来创建我的模型。以下是Person实体的样子:

public partial class Person {
    public int PersonId { get; set; }
    public int? DoctorId { get; set; }
    public int? TeacherId { get; set; }
    public int? FarmerId { get; set; }
    public int? ProstituteId { get; set; }
    public int BuildingId { get; set; }

    public Doctor Doctor { get; set; }
    public Teacher Teacher { get; set; }
    public Farmer Farmer { get; set; }
    public Prostitute Prostitute { get; set; }
}

1 个答案:

答案 0 :(得分:0)

var data = _dbcontext.Person
    .Where(p => p.BuildingId == buildingId)
    .Include(p => p.Building)
    .Include(p => p.Doctor)
    .Include(p => p.Teacher)
    .Include(p => p.Farmer)
    .Include(p => p.Prostitute)
    .OrderBy(p => p.Building;