C# EF Core 2.1为一对多关系选择字段

C# EF Core 2.1为一对多关系选择字段,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我有一个拥有实体列表的类: public class Dad { public long Id{get;set;} public string Name{get;set;} public string SecretName{get;set;} public List<Kid> Kids{get;set;} } public class Kid { public long Id{get;set;} public string Nam

我有一个拥有实体列表的类:

public class Dad
{
    public long Id{get;set;}
    public string Name{get;set;}

    public string SecretName{get;set;}

    public List<Kid> Kids{get;set;}
}

public class Kid
{
    public long Id{get;set;}
    public string Name{get;set;}
    public string SecretName{get;set;}
    public Dad Dad {get;set;
}
我的意图是返回一份父亲的名单,但只显示他们的Id、姓名,并且只显示该父亲拥有的每个孩子的Id和姓名


我使用的是EF Core 2.1

您应该将实体模型与返回的模型分开,并且只包括每种类型所需的属性,如下所示:

public class DadModel
{
    public long Id{get;set;}
    public string Name{get;set;}
    public List<Kid> Kids{get;set;}
}
因为这个新的儿童模型没有对其父亲的引用,所以您还可以避免任何类型的循环引用问题。 然后,您可以通过以下方式选择每个父亲的孩子:

var response = _context.Dads
            .Where(d.Id == Id)
            .Select(d => new DadModel{
                Id = d.Id,
                Name = d.Name
                Kids = d.Kids.Select(k => new KidsModel
                {
                    Id = k.Id,
                    Name = k.Name
                }).ToList()
            }).AsNoTracking()
            .FirstOrDefault();

谢谢,我在找“d.Kids.Select”部分。
public class KidModel
{
    public long Id{get;set;}
    public string Name{get;set;}
}
var response = _context.Dads
            .Where(d.Id == Id)
            .Select(d => new DadModel{
                Id = d.Id,
                Name = d.Name
                Kids = d.Kids.Select(k => new KidsModel
                {
                    Id = k.Id,
                    Name = k.Name
                }).ToList()
            }).AsNoTracking()
            .FirstOrDefault();