时间:2021-05-28
在分层设计模式中,各层之间的数据通常通过数据传输对象(DTO)来进行数据的传递,而大多数情况下,各层数据的定义结构大同小异,如何在这些定义结构中相互转换,之前我们通过使用AutoMapper库,但AutoMapper功能庞大,使用较为复杂,而在很多场景下,可能我们只需要一些基础的对象映射功能,那么此时你可以选择扩展库中的轻量级AutoMapper实现。
实体映射包含以下核心功能:
值类型转换
数值类型之间的兼容转换(如int-->uint)
支持值类型与其可空类型间的兼容转换
字典类型转换
列表类型转换
枚举类型与string类型间的转换
不支持结构体之间的转换以及结构体与类之间的转换
启用轻量级的实体映射,有两种方式:
你可以通过映射设置上的AddConvert来配置对应设置实体转换的后置逻辑,如下所示。
//实体转换 serviceDescriptors.AddLightweightMapper() .ConfigureLightweightMapper(options => { // 通过AddConvert可自定义转换逻辑 // 以下定义从SourceA转换到TargetB时,自动设置属性C的值 options.AddConvert<SourceA, TargetB>((mapper, a, b) => { b.C = "C"; }); });你可以通过IMapperProvider的GetMapper方法或IMapper<,>直接获取Mapper实例。
默认映射按照属性名称进行,你也可以通过MapperPropertyNameAttribute特性进行指定。
MapperPropertyNameAttribute:
属性名 类型 说明 Name String 目标或源的名称 TargetType Type 映射到的目标类型 SourceType Type 映射到当前类型的来源类型通过SourceType或TargetType你可以根据需求灵活的在源类型或目标类型上设置映射关系。
通过IMapper<,>的CopyTo方法进行默认拷贝:
var mapperB = host.Services.GetRequiredService<IMapper<SourceA, TargetB>>();var targetB1 = new TargetB();mapperB.CopyTo(sourceA, targetB1);以上示例完整项目,请参考GitHub示例
以上就是ASP.NET Core扩展库之实体映射使用详解的详细内容,更多关于ASP.NET Core扩展库之实体映射的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
错误发生的原因是当ASP.NET检测到Web站点配置为使用ASP.NET4.0,本地ASP.NET4.0的组件会传递一个不能扩展的URL到ASP.NET的管理程
asp.net操作access数据库是常见的数据库操作应用,本文就来实例讲解一下asp.net实现access数据库分页的方法。希望对大家的asp.net程序设
虽然说ASP.NET属于安全性高的脚本语言,但是也经常看到ASP.NET网站由于过滤不严造成注射.由于ASP.NET基本上配合MMSQL数据库架设如果权限过大的
我们开发ASP.NET站点时,如果将jQueryUIDatepicker与ASP.NET的验证控件(如:RequiredFieldValidator)组合使用:
  asp.net虚拟主机,指的是能够支持asp.net语言开发的虚拟主机,我们需要使用asp.net虚拟主机来搭建网站,存储数据等,因此对