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