You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AutoMapper将Company与Employee列表映射到CompanyProfileDto?

如何为CompanyProfileDto添加Employee列表映射?

基于你已有的AutoMapper配置,因为Company模型本身没有关联的Employees集合属性,可通过以下方式完成Employees字段的映射:

方式一:映射时传入已获取的员工列表

如果在映射前已经拿到了当前公司对应的员工数据,可以通过AfterMap在映射完成后手动赋值:

// 假设已获取目标公司和对应员工列表
var targetCompany = GetCompanyById(companyId);
var companyEmployees = GetEmployeesByCompanyId(companyId);

// 执行映射
var companyProfileDto = _mapper.Map<CompanyProfileDto>(targetCompany, opt =>
    opt.AfterMap((src, dest) => dest.Employees = _mapper.Map<List<EmployeeDto>>(companyEmployees)));

方式二:在映射配置中自动关联数据源

如果希望通过数据源(比如数据库)自动获取对应员工,可以在映射配置中注入数据上下文,通过MapFrom指定员工列表的来源:

public class YourMappingProfile : Profile
{
    private readonly YourDbContext _dbContext;

    // 通过构造注入获取数据库上下文
    public YourMappingProfile(YourDbContext dbContext)
    {
        _dbContext = dbContext;

        // 保留已有的基础映射
        CreateMap<Employee, EmployeeDto>();
        
        // 扩展Company到CompanyProfileDto的映射
        CreateMap<Company, CompanyProfileDto>()
            .ForMember(dest => dest.Employees, opt =>
                opt.MapFrom(src => _dbContext.Employees.Where(e => e.CompanyId == src.CompanyId)));
    }
}

补充:若Company模型包含导航属性

如果后续给Company模型添加Employees导航属性:

public class Company
{
   public int CompanyId { get; set; }
   public string CompanyName { get; set; } 
   public List<Employee> Employees { get; set; } // 新增导航属性
}

那么你现有的基础配置就足够完成自动映射,AutoMapper会识别同名的集合属性并自动转换为EmployeeDto列表,无需额外修改配置。

注:AutoMapper会自动处理集合类型的映射,只要你已配置好单个实体的映射规则(Employee→EmployeeDto),集合的转换会自动完成。

内容的提问来源于stack exchange,提问作者AJames

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:12:20