【问题标题】:Auto Mapper C# .. Add data to mapperAutomapper C# .. 将数据添加到映射器
【发布时间】:2018-05-14 14:43:32
【问题描述】:
 var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<EmployeeSkill, EmployeeSkillDTO>(); 
 });

IMapper mapper = config.CreateMapper();

List<EmployeeSkill> ski = context.EmployeeSkill.Where(r => !r.IsDeleted && r.EmployeeID == employeeID).ToList();
List<EmployeeSkillDTO> mapObj = mapper.Map<List<EmployeeSkill>, List<EmployeeSkillDTO>>(ski);

return mapObj;

返回

[
   {
    "SkillID": 1,
    "EmployeeID": 83,
    "YearOfExperience": 8,
    "Major": "major",
    "SkillName": null,
    "IsDeleted": false,
    "CreatedBY": 29,
    "CreationTime": "2018-05-14T15:53:06.203",
    "UpdatedBy": null,
    "UpdateTime": null
},

我需要从 Skills 表中返回 SkillName ...我尝试过:

var config = new MapperConfiguration(cfg => {
    cfg.CreateMap<EmployeeSkill, EmployeeSkillDTO>().ForMember(x => x.SkillName, opt => opt.ResolveUsing(src => src.Skill.SkillName)) 
 });

但它不起作用..任何建议

【问题讨论】:

  • 你试过用 .MapFrom 代替 .ResolveUsing 吗?
  • 您确定问题出在映射上吗?您是否检查过ski 是否包含您的技能项目?
  • @dlxeon 是的,我试过了,但没用
  • @oerkelens 是的,我在没有映射的情况下尝试过,并且通过 SkillName = r.Skill.SkillName 获得技能名称

标签: c# asp.net-web-api automapper dto


【解决方案1】:

你需要做两件事之一

  1. 停止在查询结果中使用.ToList(),并在配置中使用ProjectTo() 加上opt.Map 而不是“opt.ResolveUsing”。 (首选)。
  2. 在检索 EmployeeSkill 并包含 SkillName 表时调用 Include。 (这将获得您不需要的额外数据)。

方法#1:

var ski = context.EmployeeSkill.Where(r => !r.IsDeleted && r.EmployeeID == employeeID);
var mapObj = ski.ProjectTo<EmployeeSkillDTO>();

方法 #1 配置

cfg.CreateMap<EmployeeSkill, EmployeeSkillDTO>()
   .ForMember(x => x.SkillName, opt => opt.MapFrom(src => src.Skill.SkillName));

方法#2:

var ski = context.EmployeeSkill.Include(x => x.Skill)
    .Where(r => !r.IsDeleted && r.EmployeeID == employeeID).ToList();

【讨论】:

  • 首先我找不到 .Map ,你的意思是 MapFrom 吗? .. 其次,我收到错误 IMapper 不包含 projectTo 的定义。
  • 我认为它是IQueryable 的扩展。您应该可以在 ski 而不是 mapper 上调用它
  • 为了恭维@DanielLerps 评论这里是AutoMapper's IQueryable 扩展的文档链接。这就是 Daniel Gimenez 收到 ProjectTo()Map() 电话的地方
猜你喜欢
  • 1970-01-01
  • 2014-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 2017-08-29
  • 2022-01-11
相关资源
最近更新 更多