我有一个GetAll语句,该语句可以抓住每个人并填充他们所拥有的票证的集合。我的班级缩写如下:
public class Person
{
public int Id {get;set;}
public string Name {get;set;}
public ICollection<Ticket> Tickets {get;set;}
}
public class Ticket
{
public int Id {get;set;}
public int PersonId {get;set;}
public string MovieName {get;set;}
}
我正在使用实体框架从dbcontext中使用linq生成类以填充请求。
public async Task<List<Person>> GetPersonsAsync()
{
return await _context.Person.GroupJoin(_context.Ticket,
p => p.Id,
c => c.PersonId,
(per, tix) => PopulatePerson(per,tix) )
.ToListAsync();
}
private Person PopulatePerson(Person per, IEnumerable<Ticket> tix)
{
per.Tickets= tix.ToList();
return per;
}
这可行,但是我必须创建单独的私有PopulatePerson方法才能实现此目的。如何避免创建私有方法并在同一GroupJoin语句中填充票证列表?
答案 0 :(得分:2)
您可以使用Include()
并让EntityFramework为您执行Joins:
public async Task<List<Person>> GetPersonsAsync()
{
return await _context.Person
.Include(p => p.Tickets)
.ToListAsync();
}