
字符替换
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();
}
