zoukankan      html  css  js  c++  java
  • .Net Core 3.x Api开发笔记 -- 使用AutoMapper(五)

     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,最后测试效果 

    作者:PeterZhang
    本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    【火炉炼AI】机器学习003-简单线性回归器的创建,测试,模型保存和加载
    【火炉炼AI】机器学习002-标记编码方法
    【火炉炼AI】机器学习001-数据预处理技术(均值移除,范围缩放,归一化,二值化,独热编码)
    HOJ 13830 DNA Sequencing
    HDU 6078 Wavel Sequence
    hoj 13814 Cake cut
    HDU6071 Lazy Running
    HDU 6070 Dirt Ratio
    HDU 6070 Dirt Ratio
    HDU 6059 Kanade's trio
  • 原文地址:https://www.cnblogs.com/peterzhang123/p/13993858.html
Copyright © 2011-2022 走看看