
字符替换
var configuration = new MapperConfiguration(c =>{c.ReplaceMemberName("Ä", "A");c.ReplaceMemberName("í", "i");c.ReplaceMemberName("Airlina", "Airline");});
Äbc映射到Abc上,将íng映射到ing上,将AirlinaMark映射到AirlineMark上。自动映射匹配前缀与后缀

namespace DemoCoreMVC.Profiles{public class AutomapProfile:Profile{public AutomapProfile(){RecognizePrefixes("s");SourceMemberNamingConvention = new LowerUnderscoreNamingConvention();DestinationMemberNamingConvention = new PascalCaseNamingConvention();//创建映射关系CreateMap<StudentViewModel, Student>();}}}

-
一般前缀都是具有一定规律的设置,否则有些前缀a,有些前缀b,没有一定的规律,则无法完全匹配。 -
后缀通过RecognizePostfixes("s");设置即可,功能测试与前缀一致。 -
取消前缀设置ClearPrefixes();就是取消所有的前缀设置列表中设置的前缀。Automapper默认匹配了Get前缀,如果不需要可以清除。
自动映射控制(不常用)
cfg.ShouldMapField = fi => false;cfg.ShouldMapProperty = pi =>pi.GetMethod != null && (pi.GetMethod.IsPublic || pi.GetMethod.IsPrivate);
列表映射
[HttpPost]public IActionResult Add(StudentViewModel studentViewModel){var listStudents=new List<StudentViewModel>();listStudents.Add(studentViewModel);var students = mapper.Map<List<StudentViewModel>,List< Student>>(listStudents);studentService.Adds(students);return View();}

-
IEnumerable -
IEnumerable<T> -
ICollection -
ICollection<T> -
IList -
IList<T> -
List<T> -
Arrays
mapper.Map<Source[], IEnumerable<Destination>>(sources);手动控制映射(不常用)
映射源类型:
namespace DemoCoreMVC.ViewModels{public class UserViewModel{public int UserId { get; set; }public string UserName { get; set; }public string Mail { get; set; }}}
namespace DemoCoreMVC.Models{public class User{public int Id { get; set; }public string Name { get; set; }public string Email { get; set; }}}
public class AutomapProfile:Profile{public AutomapProfile(){RecognizePrefixes("s");//RecognizePostfixes("s");SourceMemberNamingConvention = new LowerUnderscoreNamingConvention();DestinationMemberNamingConvention = new PascalCaseNamingConvention();//创建映射关系CreateMap<StudentViewModel, Student>();//ClearPrefixes();CreateMap<UserViewModel, User>().ForMember(dest => dest.Id, opt => opt.MapFrom(source => source.UserId)).ForMember(dest => dest.Name, opt => opt.MapFrom(source => source.UserName)).ForMember(dest => dest.Email, opt => opt.MapFrom(source => source.Mail));}}
public IActionResult Add(UserViewModel userViewModel){var user = mapper.Map<UserViewModel,User>(userViewModel);return View();}

嵌套映射
namespace DemoCoreMVC.ViewModels{public class EmployeeViewModel{public int Id { get; set; }public UserViewModel User { get; set; }}}
namespace DemoCoreMVC.Models{public class Employee{public int Id { get; set; }public User User { get; set; }}}
CreateMap<UserViewModel, User>().ForMember(dest => dest.Id, opt => opt.MapFrom(source => source.UserId)).ForMember(dest => dest.Name, opt => opt.MapFrom(source => source.UserName)).ForMember(dest => dest.Email, opt => opt.MapFrom(source => source.Mail));CreateMap<EmployeeViewModel,Employee>();
public IActionResult Add(UserViewModel userViewModel){EmployeeViewModel employeeViewModel = new EmployeeViewModel() { Id = 1, User = userViewModel };var employee = mapper.Map<EmployeeViewModel, Employee>(employeeViewModel);return View();}
