1,安装AutoMapper包
2,准备实体类和映射类
1 public class Users 2 { 3 public int Userid { get; set; } 4 public string Username { get; set; } 5 public string Password { get; set; } 6 public string TrueName { get; set; } 7 public int Sex { get; set; } 8 public string Email { get; set; } 9 public DateTime Birthday { get; set; } 10 public decimal bankprice { get; set; } 11 12 ....... 13 } 14 15 16 public class UsersDto 17 { 18 public int Userid { get; set; } 19 public string UserName { get; set; } 20 public string Sex { get; set; } 21 public string Birthday { get; set; } 22 public string Status { get; set; } 23 public string Regtime { get; set; } 24 public string Province { get; set; } 25 public string City { get; set; } 26 public string Area { get; set; } 27 }
3,配置映射类,分别创建类:CustomProfile、AutoMapperConfig
1 /// <summary> 2 /// AutoMapper映射类 实体类--->Dto扩展类 3 /// </summary> 4 public class CustomProfile : Profile 5 { 6 public CustomProfile() 7 { 8 CreateMap<Users, UsersDto>() 9 .ForMember(d => d.UserName, o => o.MapFrom(s => s.Username)) 10 //性别映射 0女 1男 2保密 11 .ForMember(d => d.Sex, o => o.MapFrom(s => s.Sex == 0 ? "女" : (s.Sex == 1 ? "男" : "保密"))) 12 //状态映射 0停用 1启用 13 .ForMember(d => d.Status, o => o.MapFrom(s => s.status == 0 ? "停用" : "启用")) 14 //生日 时间格式映射 yyyy-MM-dd 15 .ForMember(d => d.Birthday, o => o.MapFrom(s => s.Birthday.ToString("yyyy-MM-dd"))) 16 //注册时间 时间格式映射 yyyy-MM-dd HH:mm:ss 17 .ForMember(d => d.Regtime, o => o.MapFrom(s => s.regtime.ToString("yyyy-MM-dd HH:mm:ss"))) 18 //省份 100 19 .ForMember(d => d.Province, o => o.MapFrom(s => s.ProvinceId == 100 ? "河北省" : "北京市")) 20 //城市 1001 21 .ForMember(d => d.City, o => o.MapFrom(s => s.CityId == 1001 ? "石家庄市" : "北京市")) 22 //地区 10011 23 .ForMember(d => d.Area, o => o.MapFrom(s => s.AreaId == 10011 ? "正定区" : "北京市")); 24 } 25 } 26 27 28 /// <summary> 29 /// 配置AutoMapper映射类 30 /// </summary> 31 public class AutoMapperConfig 32 { 33 public static MapperConfiguration RegisterMappings() 34 { 35 return new MapperConfiguration(option => 36 { 37 option.AddProfile(new CustomProfile()); 38 }); 39 } 40 }
4,注册AutoMapper,注意下边红色部分
1 public void ConfigureServices(IServiceCollection services) 2 { 3 services.AddControllersWithViews(); 4 5 //注册AddAutoMapper 6 services.AddAutoMapper(typeof(AutoMapperConfig)); 7 AutoMapperConfig.RegisterMappings(); 8 9 //注册接口 10 services.AddScoped<IUsersServices, UsersServices>(); 11 }
5,在业务类中的构造函数中调用,使用 IMapper 进行调用。。。
1 public class UsersServices : IUsersServices 2 { 3 private readonly IMapper mapper; 4 public UsersServices(IMapper _mapper) 5 { 6 mapper = _mapper; 7 } 8 public List<UsersDto> GetUserList() 9 { 10 return mapper.Map<List<UsersDto>>(this.GetUserDataList()); //调用数据库访问层获取数据 11 }
。。。。。。。。。
6,在控制器中使用
1 public class UsersController : Controller 2 { 3 private readonly IUsersServices usersServices; 4 5 public UsersController(IUsersServices _usersServices) 6 { 7 usersServices = _usersServices; 8 } 9 10 public IActionResult Index() 11 { 12 var getmodel = usersServices.GetUserList(); //正常调用 13 return View(getmodel); 14 } 15 }
7,前端简单的用Html展示
1 <div class="eblist-div" id="listDiv"> 2 <table id="list-table" class="datalist table table-bordered"> 3 <thead class="bg-info"> 4 <tr> 5 <th>序号</th> 6 <th>用户名称</th> 7 <th>性别</th> 8 <th>生日</th> 9 <th>状态</th> 10 <th>注册时间</th> 11 <th>所在省</th> 12 <th>所在市</th> 13 <th>所在地区</th> 14 </tr> 15 </thead> 16 <tbody> 17 @foreach (var item in Model) 18 { 19 <tr> 20 <td style="text-align: center;">@item.Userid</td> 21 <td style="text-align: center;">@item.UserName</td> 22 <td style="text-align: center;">@item.Sex</td> 23 <td style="text-align: center;">@item.Birthday</td> 24 <td style="text-align: center;">@item.Status</td> 25 <td style="text-align: center;">@item.Regtime</td> 26 <td style="text-align: center;">@item.Province</td> 27 <td style="text-align: center;">@item.City</td> 28 <td style="text-align: center;">@item.Area</td> 29 </tr> 30 } 31 </tbody> 32 </table> 33 </div>
8,最后测试效果