[英]AutoMapper map only needed fields
我使用 AutoMapper 来映射类。 我正在努力使用 Automapper 语法。 我有域类:
public class Club
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime OpenDate { get; set; }
public IEnumerable<Team> Teams { get; set; }
}
public class Team
{
public int Id { get; set; }
public string Name { get; set; }
public string Department { get; set; }
public IEnumerable<Player> Players { get; set; }
}
public class Player
{
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public int Age { get; set; }
public string Address { get; set; }
}
我也有 dto 类:
public class ClubDTO
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime OpenDate { get; set; }
public IEnumerable<Team> TeamsDTO { get; set; }
}
public class TeamDTO
{
public int Id { get; set; }
public string Name { get; set; }
public string Department { get; set; }
public IEnumerable<Player> PlayersDTO { get; set; }
}
public class PlayerDTO
{
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public int Age { get; set; }
public string Address { get; set; }
}
我有域类中 DTO 类的映射设置:
CreateMap<PlayerDTO, Player>();
CreateMap<TeamDTO, Team>();
CreateMap<ClubDTO, Club>();
我 map ClubDTO
class 到Club
:
...
_mapper.Map(clubDto, club);
...
如何设置仅映射Player.Age
和Player.Addres
而不是所有字段所有类?
我相信您应该忽略您不想映射的任何属性,如下所示:
CreateMap<PlayerDTO, Player>();
.ForMember(x => x.Id, x => x.Ignore())
.ForMember(x => x.Name, x => x.Ignore());
.ForMember(x => x.Surname , x => x.Ignore());
请注意,这应该在 automapper 配置期间完成,而不是在调用Map
方法时完成。
你应该能够做这样的事情: _mapper.Map(from, to).ForMember(x => x.MyProperty, opt => opt.Ignore());
我还建议使用View Models
。 这对AutoMapper
很大帮助,例如:
public class Player
{
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public int Age { get; set; }
public string Address { get; set; }
}
public class PlayerViewModel
{
public int Id{get; set;
//more fields that you can use in your views
}
public class PlayerDTO
{
public int Age { get; set; }
public string Address { get; set; }
}
var onlyAgeAndAdress=_mapper.Map(Player, PlayerDTO);
你只会得到年龄和地址。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.