【问题标题】:How to retrieve list from DB to front-end with AutoMapper如何使用 AutoMapper 从数据库检索列表到前端
【发布时间】: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


【解决方案1】:

我发现错误,不是 Automapper,而是我的 Linq 语句:

return _context.Employees.Include(c => c.EmployeeCourses).ToList();

请关闭此线程。感谢 Lucian Bargaoanu 的回复,周末愉快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    相关资源
    最近更新 更多