.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)区别