AutoMapper官方文档(二)【升级指南】

AutoMapper 使用手册以及扩展 可以看到,映射后,dto 中两个元素的类型,一个是 EmployeeDto,一个是 EmployeeDto2,即实现了父类映射到父类,子类映射到子类。/// 数据源的成员变量的命名规则。/// 数据源的成员变量的命名规则。/// new PascalCaseNamingConvention() 帕斯卡命名规则(每个单词的首字母大写) 阅读详情

初始化

您现在必须使用Mapper.Initialize或new MapperConfiguration()来初始化AutoMapper。如果您希望保持静态使用,请使用Mapper.Initialize。

如果你有很多的Mapper.CreateMap调用,把它们移动到一个Profile,或者Mapper.Initialize,在启动时调用一次。

例如在这里看到。

Profiles

不要覆盖Configure方法,而是直接通过构造函数进行配置:

public class MappingProfile : Profile {
    public MappingProfile() {
        CreateMap<Foo, Bar>();
        RecognizePrefix("m_");
    }
}

IgnoreAllNonExisting扩展

一个流行的 Stack Overflow文章介绍了忽略目标类型上的所有不存在的成员的想法。 它使用配置API中不再存在的东西。 该功能实际上仅用于配置验证。

在5.0中,您可以使用在成员列表枚举中传递的ReverseMap或CreateMap来针对源成员(或没有成员)进行验证。 任何你有这个IgnoreAllNonExisting扩展名的地方,都可以使用CreateMap重载来对源或者非成员进行验证:

cfg.CreateMap<ProductDto, Product>(MemberList.None);

解决上下文事情

ResolutionContext用于捕获大量信息,源和目标值以及分层父模型。 对于源/目标值,所有接口(值解析器和类型转换器)以及配置选项现在包括源/目标值,以及源/目标成员(如果适用)。

如果您试图访问模型中的某个父对象,则需要将这些关系添加到模型中,并通过这些关系访问它们,而不是通过AutoMapper的层次结构访问它们。 ResolutionContext由于性能和健全的原因而被削减。

值解析器

值解析器的签名已更改为允许访问源/目标模型。 另外,基类已经不再用于接口。 对于没有成员重定向的值解析器,接口现在是:

public interface IValueResolver<in TSource, in TDestination, TDestMember>
{
    TDestMember Resolve(TSource source, TDestination destination, TDestMember destMember, ResolutionContext context);
}

您现在可以访问此解析器针对的源模型,目标模型和目标成员。

如果您正在使用ResolveUsing并传递FromMember配置,则现在这是一个新的解析器接口:

public interface IMemberValueResolver<in TSource, in TDestination, in TSourceMember, TDestMember>
{
    TDestMember Resolve(TSource source, TDestination destination, TSourceMember sourceMember, TDestMember destMember, ResolutionContext context);
}

这现在被直接配置为

ForMember(dest => dest.Foo, opt => opt.ResolveUsing<MyCustomResolver, string>(src => src.Bar)

类型转换器

类型转换器的基类现在已经变成了接受源和目标对象并返回目标对象的单一接口:

public interface ITypeConverter<in TSource, TDestination>
{
    TDestination Convert(TSource source, TDestination destination, ResolutionContext context);
}

循环引用

以前,AutoMapper可以通过跟踪所映射的内容来处理循环引用,并且在每个映射上检查源/目标对象的本地散列表,以查看该项是否已被映射。 事实证明,这种跟踪是非常昂贵的,你需要选择使用PreserveReferences循环映射工作。 或者,您可以配置MaxDepth:

//自引用映射
cfg.CreateMap<Category, CategoryDto>().MaxDepth(3);

//users和groups之间的循环引用
cfg.CreateMap<User, UserDto>().PreserveReferences();

从6.1.0开始,只要静态检测到递归,就可以在配置时自动设置PreserveReferences。 如果在您的情况下没有发生这种情况,请使用完整的repro开启一个问题,我们会研究它。

UseDestinationValue

UseDestinationValue告诉AutoMapper不要为某个成员创建一个新的对象,而是使用目标对象的现有属性。 它以前是默认的。 考虑这是否适用于你的情况。

cfg.CreateMap<Source, Destination>()
   .ForMember(d => d.Child, opt => opt.UseDestinationValue());
AutoMapper的使用 1.包含AutoMapper.dll 在工程的Lib文件夹下 2.AutoMapper用法 - Qi Fei - 博客园.png 参考图片 3.工程为简单的代码演示,有注释,请大家参考 立即下载

相关推荐

EF6Fluent API+AutoMapper.EF6使用

EF Code First(4)Fluent API - 配置属性/类型+AutoMapper.EF6

AutoMapper详解

简单来说,AutoMapper是以.NET(C#)语言开发的一个轻量的处理一个实体对象到另一个实体对象之间映射关系的组件库。开发人员需要做的是通过AutoMapper配置两个实体对象之间的一些映射关系。就可以直接实现映射关系的复用,提高开发效率,减少重复代码。为了降低现代开发框架的复杂度,往往需要做代码分层,分层之后,必然出现不同的数据承载对象VO、BO、Entity ,从设计的角度来说,VO、BO、Entity 的设计思路并不违反 DRY 原则,为了分层清晰、减少耦合,多维护几个类的成本也并不是不能接受的

李宥的博客 1万+

AXI VIP配置全指南:从报错到成功仿真的完整流程(Vivado 2023版)

本文详细解析了在Vivado 2023环境中配置AXI Verification IP(VIP)进行协议仿真的完整流程。针对常见的include和import报错问题,提供了具体的解决方案和代码示例,指导用户从IP核创建、参数化配置,到构建可工作的仿真测试平台,最终实现成功仿真。

gpt4scribbler的博客 233

2.1配置(AutoMapper官方文档翻译)

automapper configuration

yan_yu_lv_ji的博客 653

MySQL服务启动失败?手把手教你排查NET HELPMSG 3534错误(附完整修复流程)

本文针对Windows平台上MySQL服务启动失败并提示NET HELPMSG 3534错误的常见问题,提供了系统性的排查与修复指南。文章深入剖析了错误本质,并手把手教你通过查看MySQL错误日志、检查并初始化数据目录、修正Windows服务配置、排查my.ini配置文件陷阱等核心步骤,彻底解决这一棘手问题,帮助开发者和运维人员快速恢复数据库服务。

wdx0123456的博客 894

扩增子分析|基于零模型的群落确定性和随机性构建过程——R实战

周集中教授团队多年在群落确定性和随机性过程深耕,于2017年总结出来下述图表中的计算路径,广受生态领域研究者的推崇。本文基于该计算路径,梳理了整理了邓晔老师组的代码,通过一个实例演示了计算过程和结果。

weixin_46814750的博客 4668

.net core中使用Automapper

安装所需的包 Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection 配置AutoMapper public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(Com...

Jonny的博客 4315

【无标题】EXCEL实现刷题

运用Excel开发的刷题工具,具有普遍实用性,可将WORD的试题自动导入并实现刷题。

weixin_44081794的博客 2970

AutoMapper.Collection 使用指南

AutoMapper.Collection 使用指南 1. 项目介绍 AutoMapper.Collection 是一个针对 AutoMapper 的扩展库,它为更新现有集合提供了强大支持,允许您无需重新创建集合对象即可映射集合到已有集合中。该工具通过等价性比较,自动实现集合中的添加、更新和删除操作。基于用户自定义的源集合和目标集合内元素的等价标准,它可以智能化地处理集合之间的映射过程,特别适合于...

gitblog_00033的博客 1090

SmsForwarder v6.4.0 + Flask API 实战:5步搭建手机验证码自动化接收服务

本文详细介绍了如何利用SmsForwarder v6.4.0和Flask API构建企业级验证码自动化处理系统。通过5个关键步骤,包括系统架构设计、Android端配置、Flask服务端实现、企业级部署方案以及实战应用场景扩展,帮助开发者高效处理短信验证码,提升自动化测试和数据采集的工作效率。

weixin_30292745的博客 392

Python+Flask+Echarts打造全国气象数据可视化分析大屏

本文详细介绍了如何使用Python+Flask+Echarts构建全国气象数据可视化分析大屏,实现实时监控、趋势分析和快速决策。通过Python强大的数据处理能力、Flask的轻量级优势和Echarts的交互体验,打造高效的气象数据可视化系统,提升农业、物流等行业的决策效率。

weixin_29061531的博客 1059

1.1入门指南(AutoMapper官方文档翻译)

AutoMapper是一个对象-对象映射器。对象-对象映射的工作原理是将一种类型的输入对象转换为不同类型的输出对象。AutoMapper的有趣之处在于,它提供了一些有趣的约定,将如何将类型A映射到类型B的繁琐工作解决掉。只要类型B遵循AutoMapper的既定约定,映射两个类型几乎不需要任何配置。

yan_yu_lv_ji的博客 919

用AI科研绘图全新升级!借助谷歌新发布模型Nano Banana pro实测一键绘制机制图与技术路线图,直接告别文字乱码与低画质

之前有同仁反馈,用Nano Banana画科研插图的时候,要么文字部分容易乱码,要么抓不住关键内容,画出来的效果反复修改后,还是达不到理想的效果。终于在Gemini 3发布没几天,万众期待的大香蕉模型也成功升级到了Pro版本,官方名称叫“Gemini 3 Pro Image”,实际上也就是我们说的Nano Banana 2。这次的Nano Banana Pro模型,不仅可以直出4K高清图,还能自定义比例,推理能力和中文文字的稳定性也得到了提升。

智能AI让学术科研更容易 1887

AutoMapper入门

AutoMapper 是一个 .NET 类库,它能自动在两个类型之间做映射,尤其是当这些类型拥有相似属性时。它减少了手动编写的重复性劳动。set;set;set;set;set;set;可以直接通过 AutoMapper 在这两者之间做转换,而无需显式赋值。

R3333355726856的博客 1672

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

AutoMapper.Data 使用指南

AutoMapper.Data 使用指南 项目介绍 AutoMapper.Data 是一个针对 ADO.NET 的 AutoMapper 扩展库,它提供了对 IDataReader 的支持。该库旨在简化数据库查询结果到 DTO(数据传输对象)之间的映射过程,特别是在需要处理数据库记录转换为业务对象场景中。通过使用这个扩展,开发者能够更加便捷地在 ORM(如 Entity Framework)之外...

gitblog_00395的博客 1125

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

[.NET] - 初步认识AutoMapper 初步认识AutoMapper AutoMapper

初步认识AutoMapper 前言 手动映射 使用AutoMapper 创建映射 Conventions 映射到一个已存在的实例对象 前言 通常在一个应用程序中,我们开发人员会在两个不同的类型对象之间传输数据,通常我们会用DTOs(数据传输对象),View Models(视图模型),或者直接是一些从一个service或者Web API的一些请求或应答对象。一个常见的需要使用数据传输对象的情况是,我...

ishuahua的博客 1804

JoliCode AutoMapper 快速入门指南

JoliCode AutoMapper 快速入门指南 JoliCode AutoMapper 是一个以速度为核心特性的 PHP AutoMapper 工具,它通过即时代码生成技术极大地加速了对象到对象的映射过程。本指南旨在帮助开发者快速理解该项目的结构、主要文件及其配置方法。 1. 项目目录结构及介绍 JoliCode AutoMapper 的目录结构简洁而功能明确: src: 核心源代码所在目...

gitblog_00799的博客 816

关于AutoMapper

AutoMapper 是一个基于约定的对象 - 对象映射库,主要用于在不同对象类型之间自动映射属性值。它能根据配置的映射规则,将源对象的属性值填充到目标对象中,避免了手动编写大量繁琐的对象映射代码。

ly1h1的博客 1579

在ABP中灵活使用AutoMapper

该文章是系列文章 基于.NetCore和ABP框架如何让Windows服务执行Quartz定时作业 的其中一篇。 AutoMapper简介 AutoMapper是一个简单的小型的对象映射库,是为了解决一个繁杂的问题 - 将一个对象映射到另一个对象的到处乱飞的胶水代码。这类胶水代码非常沉闷,让人怀疑自己的工作的价值性。AutoMapper就是你摆脱此类代码的福音。 官网地址:https://auto...

Repeat 3001

java automapper 使用_AutoMapper使用

前言:前篇搭建了下WCF的代码,就提到了DTO的概念,对于为什么要有这么一个DTO的对象,上章可能对于这点不太详尽,在此不厌其烦再来提提它的作用:从安全上面考虑,领域Model都带有领域业务,让Client端引用Domain Model就意味着Client端可以绕过应用层直接完成业务逻辑的调用,这样是一种不安全的机制。从对象传递效率上面考虑,领域Model带有业务,而这些业务一般对于UI层是没有意...

weixin_32829077的博客 1052

AutoMapper.Extensions.ExpressionMapping 使用指南

AutoMapper.Extensions.ExpressionMapping 使用指南 项目介绍 AutoMapper.Extensions.ExpressionMapping 是一个针对 AutoMapper 的扩展库,它允许开发者在 LINQ 表达式中直接使用 AutoMapper 映射配置,从而简化对象到对象的转换过程。这个库特别适用于那些需要在查询或数据操作表达式中进行类型映射的场景,...

gitblog_00327的博客 684
上一篇: AutoMapper官方文档(一)【入门】
下一篇: AutoMapper官方文档(三)【约定】
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值