【发布时间】:2019-09-12 14:27:53
【问题描述】:
将映射更改为 Automapper 后,只会通过端点发送一个空列表。
最初,我有一个端点,可以检索所有员工的信息,包括每个员工参加的每门课程的列表。这是实体和 Dto 之间的手动映射。
//来自Configure中的startup.cs
AutoMapper.Mapper.Initialize(cfg =>
{
cfg.CreateMap<Employee, Models.EmployeeCoursesDto>();
cfg.CreateMap<Employee, Models.EmployeeDto>();
cfg.CreateMap<EmployeeCourses, Models.EmployeeCoursesDto>();
});
//来自Employee实体
public class Employee
{
[Key]
//Gen new Id key in DB when object created
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
[MaxLength(50)]
public string Name { get; set; }
[MaxLength(50)]
public string Title { get; set; }
public ICollection<EmployeeCourses> EmployeeCourses { get; set; }
= new List<EmployeeCourses>();
}
}
//From employee Dto
public class EmployeeDto
{
public int Id { get; set; }
public string Name { get; set; }
public string Title { get; set; }
public ICollection<EmployeeCoursesDto> EmployeeCourses { get; set; }
= new List<EmployeeCoursesDto>();
}
}
//Endpoint in controller
[HttpGet()]
public IActionResult GetAllEmployees()
{
var employeeEntities = _employeeInfoRepository.GetEmployees();
var results = Mapper.Map<IEnumerable<EmployeeDto>>(employeeEntities);
return Ok(results);
}
//From Irepository
IEnumerable<Employee> GetEmployees();
//From repository
public IEnumerable<Employee> GetEmployees()
{
return _context.Employees.OrderBy(c => c.Name).ToList();
}
我希望输出所有员工的所有数据文件,包括他们的课程列表。 输出是所有带有数据的字段,除了在断点运行时为“0”的课程列表,在 Postman 中它仅显示为: “身份证”:2, "name": "测试人员", "title": "公交车司机", “课程数量”:0, “员工课程”:[], "totalAchievedHoursAuditor": 0, “totalAchievedHoursAccountant”:51, “courseBalanceAccountant”:空, "courseBalanceAuditor": null
但是,如果我尝试另一个端点仅用于检索特定课程或课程列表,则数据会正确显示。同时映射员工和课程似乎有问题?
【问题讨论】:
标签: list automapper