zoukankan      html  css  js  c++  java
  • jQuery火箭图标返回顶部代码

    在上篇中我们通过创建一个类并继承autoMapper的Profile类

        public class Mappings : Profile
        {
            public Mappings()
            {
                CreateMap<UserDto, TbUser>();
            }
        }

    这样做有一种弊端,就是当传输对象很多的时候,还需要手动一个个的配置映射关系,维护起来相对来说也比较麻烦。

    封装AutoMapper

    创建AutoMapperExtension扩展类

        /// <summary>
        /// AutoMapper扩展类
        /// </summary>
        public static class AutoMapperExtension
        {
            /// <summary>
            /// 将源对象映射到目标对象
            /// </summary>
            /// <typeparam name="T">实体类型</typeparam>
            /// <param name="obj">源对象</param>
            /// <returns>转化之后的实体</returns>
    
            public static T MapTo<T>(this object obj)
            {
                if (obj == null) throw new Exception("异常");
                var config = new MapperConfiguration(ctx => ctx.CreateMap(obj.GetType(), typeof(T)));
                var mapper = config.CreateMapper();
                return mapper.Map<T>(obj);
            }
    
            /// <summary>
            /// 将源对象映射到目标对象
            /// </summary>
            /// <typeparam name="T">实体类型</typeparam>
            /// <param name="dto">源对象</param>
            /// <param name="entity">目标对象</param>
            /// <returns>转化之后的实体</returns>
            public static T Map<T>(object dto, T entity)
            {
                var config = new MapperConfiguration(ctx => ctx.CreateMap(dto.GetType(), typeof(T)));
                var mapper = config.CreateMapper();
                var newModel = mapper.Map(dto, entity);
                return newModel;
            }
        }

    修改业务层

    去掉构造函数中IMapper注入

    去掉启动类Startup.cs中 services.AddAutoMapper(typeof(Mappings)) 方法

            /// <summary>
            /// 添加用户
            /// </summary>
            /// <param name="dto">实体传输对象</param>
            /// <returns></returns>
            public int Add(UserDto dto)
            {
                //var info = _mapper.Map<UserDto, TbUser>(dto);
                var info = dto.MapTo<TbUser>();
                info.AddTime = DateTime.Now;
                info.UserId = Guid.NewGuid().ToString("N");
                //var user = new TbUser
                //{
                //    UserId = Guid.NewGuid().ToString("N"),
                //    Email = dto.Email,
                //    UserName = dto.UserName,
                //    AddTime = DateTime.Now
                //};
                _dbContext.Add(info);
                return _dbContext.SaveChanges();
            }
            /// <summary>
            /// 编辑用户信息
            /// </summary>
            /// <param name="dto">实体传输对象</param>
            /// <returns></returns>
            public int Update(UserDto dto)
            {
                var user = _dbContext.TbUsers.Find(dto.UserId);
                if (user == null) throw new Exception("获取用户信息失败");
                //user.UserName = dto.UserName;
                //user.Email = dto.Email;
                AutoMapperExtension.Map(dto, user);
                return _dbContext.SaveChanges();
            }

    运行测试

    跟封装前一样的效果

  • 相关阅读:
    [LintCode] Set Matrix Zeros
    [LintCode] Identify Celebrity
    [LintCode] Edit Distance
    [LintCode] Edit Distance II
    [LintCode] Strings Serialization
    二十七. Keepalived热备 Keepalived+LVS 、 HAProxy服务器
    二十六. 集群及LVS简介 LVS-NAT集群 LVS-DR集群
    二十五 存储技术与应用 iSCSI技术应用 、 udev配置 NFS网络文件系统 、 Multipath多路径 、 NFS网络文件系统 、 udev配置
    二十三.Subversion基本操作、使用Subversion协同工作、制作nginx的RPM包
    二十二. 安装部署Tomcat服务器、使用Tomcat部署虚拟主机、使用Varnish加速Web
  • 原文地址:https://www.cnblogs.com/tenghao510/p/11978076.html
Copyright © 2011-2022 走看看