针对一对多关系中多端数据的获取,我们需要三个步骤:定义实体类、定义DTO类以及编写控制器方法。假设我们有一个学生和班级的关系,其中一个班级对应多个学生。
首先,我们需要定义班级和学生的实体类:
public class Class
{
public int Id { get; set; }
public string Name { get; set; }
public List Students { get; set; }
}
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int ClassId { get; set; }
public Class Class { get; set; }
}
注意,我们在班级实体中定义了一个List类型的Students属性,用于存储该班级中的所有学生,并且在学生实体中定义了一个Class属性,用于表示该学生所在的班级。
接下来,我们需要定义一个DTO类,用于将班级和学生的信息合并:
public class ClassDetailsDto
{
public int Id { get; set; }
public string Name { get; set; }
public List Students { get; set; }
}
public class StudentDto
{
public int Id { get; set; }
public string Name { get; set; }
}
在ClassDetailsDto中,我们将Students属性改为了List类型的StudentDto,并且去除了Class属性。在StudentDto中,我们只保留了Id和Name两个属性。
最后,我们需要编写控制器方法,用于返回所有班级及其对应的学生:
[HttpGet]
public async Task> GetClassesWithStudents()
{
var classes = await _context.Classes.Include(c => c.Students).ToListAsync();
return classes.Select(c => new ClassDetailsDto
{
Id = c.Id,
Name = c.Name,
Students = c.Students