.net core使用AutoMapper

Posted sea1ee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net core使用AutoMapper相关的知识,希望对你有一定的参考价值。

AutoMapper文档:http://docs.automapper.org/en/stable/The-MyGet-build.html

新的版本抛弃了静态API方法,我们将使用依赖注入来完成。

①添加包

 技术图片

 

②创建MyAutoMapper.cs文件来创建实体和Dto之间的映射关系

 public class MyAutoMapper : Profile
    
        public MyAutoMapper()
        
            //实体和Dto的相互转化
            CreateMap<PFUserDto, PFUser>().ReverseMap();
        
 /// <summary>
    /// 用户表
    /// </summary>
    [Table("PF_User")]
    public class PFUser
    

        /// <summary>
        /// 主键
        /// </summary>
        [Column("UserGuid")]
        [Display(Name = "用户表主键", Description = "用户表主键")]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid Id  get; set; 

        /// <summary>
        /// 用户名
        /// </summary>
        [Display(Description = "用户名", Name = "用户名")]
        [Column("UserName")]
        [StringLength(128)]
        public string  UserName  get; set; 

        /// <summary>
        /// 密码
        /// </summary>
        [Display(Description = "密码", Name = "密码")]
        [Column("UserPassWord")]
        [StringLength(256)]
        public string  UserPassWord  get; set; 

        /// <summary>
        /// 是否删除
        /// </summary>
        [Display(Description = "是否删除", Name = "是否删除")]
        [Column("IsDeleted")]
        public byte?  IsDeleted  get; set; 

        /// <summary>
        /// 创建日期
        /// </summary>
        [Display(Description = "创建日期", Name = "创建日期")]
        [Column("CreateDate")]
        public DateTime?  CreateDate  get; set; 

    
 public class PFUserDto
    

        /// <summary>
        /// 主键
        /// </summary>
        [Column("UserGuid")]
        [Display(Name = "用户表主键", Description = "用户表主键")]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid Id  get; set; 

        /// <summary>
        /// 用户名
        /// </summary>
        [Display(Description = "用户名", Name = "用户名")]
        [Column("UserName")]
        [StringLength(128)]
        public string UserName  get; set; 

        /// <summary>
        /// 密码
        /// </summary>
        [Display(Description = "密码", Name = "密码")]
        [Column("UserPassWord")]
        [StringLength(256)]
        public string UserPassWord  get; set; 

        /// <summary>
        /// 是否删除
        /// </summary>
        [Display(Description = "是否删除", Name = "是否删除")]
        [Column("IsDelte")]
        public byte? IsDeleted  get; set; 

        /// <summary>
        /// 创建日期
        /// </summary>
        [Display(Description = "创建日期", Name = "创建日期")]
        [Column("CreateDate")]
        public DateTime? CreateDate  get; set; 


        public string MyProperty  get; set; 

    

 

③添加服务

技术图片

  

 ④使用:实体转Dto,Dto转实体也是一样的

技术图片

 

技术图片

 

 ProjectTo<>方法:

技术图片

 

值的转化,我们想给前端传的时间是字符串形式的,AutoMapper还允许我们自定义转化器来转化我们的数据类型

①创建DateTimeTypeConverter.cs文件

 /// <summary>
    /// DateTime2string
    /// </summary>
    public class DateTimeTypeConverter : ITypeConverter<DateTime, string>
    
        public string Convert(DateTime source, string destination, ResolutionContext context)
        
            return source.ToString("yyyy-MM-dd HH:mm:ss");
        
    

添加类型映射关系

public class MyAutoMapper : Profile
    
        public MyAutoMapper()
        
            //  可以给lambda表达式
            //CreateMap<DateTime, string>().ConvertUsing(x => x.ToString("yyyy-MM-dd HH:mm:ss"));
            //实现接口
            CreateMap<DateTime, string>().ConvertUsing<DateTimeTypeConverter>();
            //实体和Dto的相互转化
            CreateMap<PFUserDto, PFUser>().ReverseMap();
        


    

 

修改我们的Dto  CreateDate类型

技术图片

 

 使用:字符串转时间

技术图片

 

 时间转字符串

技术图片

 

 还有别的就自己看文档吧

 

以上是关于.net core使用AutoMapper的主要内容,如果未能解决你的问题,请参考以下文章

使用将 net461 设置为唯一框架的 ASP.NET Core Web 应用程序 (.NET Core) 与使用 (.NET Framework) 模板之间的区别

2021-06-29 .NET高级班 75-ASP.NET Core Grpc在Core中的使用

Net Core 多项目开发(net core 类库项目使用)

NET Standard vs Net Core App:创建 .NET Core 项目时(使用控制台或类库)

ASP.NET Core (.NET Core) and ASP.NET Core (.NET Framework)区别

.NET Core跨平台:使用.NET Core开发一个初心源商城总括