04.AutoMapper 之投影(Projection)
https://www.jianshu.com/p/031553705417
投影(Projection)
投影将源转换为目标而不是扁平化对象模型。如果没有额为的配置AutoMapper
需要一个扁平化的目标来匹配源类型的命名结构。当你想将源值投影到一个与源结构不完全匹配的目标中,必须指定自定义的成员映射定义。例如,我们可能想要转换此源结构:
public class CalendarEvent
{
public DateTime Date { get; set; }
public string Title { get; set; }
}
接受网页上的输入表单的对象:
public class CalendarEventForm
{
public DateTime EventDate { get; set; }
public int EventHour { get; set; }
public int EventMinute { get; set; }
public string Title { get; set; }
}
因为目标属性的名称与源属性不完全匹配(CalendarEvent.Date
需要是CalendarEventForm.EventDate
),所以我们需要在类型映射配置中指定自定义成员映射:
// 模型
var calendarEvent = new CalendarEvent
{
Date = new DateTime(2008, 12, 15, 20, 30, 0),
Title = "Company Holiday Party"
};
// 配置 AutoMapper
Mapper.Initialize(cfg =>
cfg.CreateMap<CalendarEvent, CalendarEventForm>()
.ForMember(dest => dest.EventDate, opt => opt.MapFrom(src => src.Date.Date))
.ForMember(dest => dest.EventHour, opt => opt.MapFrom(src => src.Date.Hour))
.ForMember(dest => dest.EventMinute, opt => opt.MapFrom(src => src.Date.Minute)));
// 执行映射
CalendarEventForm form = Mapper.Map<CalendarEvent, CalendarEventForm>(calendarEvent);
form.EventDate.ShouldEqual(new DateTime(2008, 12, 15));
form.EventHour.ShouldEqual(20);
form.EventMinute.ShouldEqual(30);
form.Title.ShouldEqual("Company Holiday Party");
每个自定义成员配置都使用一个委托动作来单独配置。 在上面的示例中,我们使用MapFrom
来执行自定义源到目标成员的映射。 MapFrom
方法使用lambda表达式作为参数,在映射期间对lambda表达式进行求值后赋值给目标成员。 MapFrom
表达式可以是任何Func <TSource,object>
的 lambda表达式。
04.AutoMapper 之投影(Projection)的更多相关文章
- AutoMapper之投影
7.投影 AutoMapper有一种自定义映射,叫投影.接下来我们通过一个示例来了解它 7.1示例 //源对象 public class CalendarEvent { public DateTime ...
- shadow projection
1.概述 shadow projection,又可成为planar shadow, 这是一种非常简单的绘制阴影的方法. 主要应用的应用场景:物体在平面投射阴影. 主要思想:把阴影看作是物体在平面上的投 ...
- MongoDB Projection
版权所有,未经许可,禁止转载 章节 MongoDB 入门 MongoDB 优势 MongoDB 安装 MongoDB 数据建模 MongoDB 创建数据库 MongoDB 删除数据库 MongoDB ...
- Google earth engine 中的投影、重采样、尺度
本文主要翻译自下述GEE官方帮助 https://developers.google.com/earth-engine/guides/scale https://developers.google.c ...
- SQLSERVER中的假脱机spool
SQLSERVER中的假脱机spool 我发现网上对于假脱机的解释都非常零散,究竟假脱机是什么? 这几天在家里研究了一下,收集了很多网上的资料 假脱机是中文的翻译,而英文的名字叫做 spool 在徐老 ...
- 027 hibernate查询语言(HQL)
概述:数据查询与检索是Hibernate中的一个亮点,相对其他ORM实现而言,Hibernate提供了灵活多样的查询机制. 标准化对象查询(Criteria Query):以对象的方式进行查询,将查询 ...
- Apache-Flink深度解析-SQL概览
你可能感兴趣的文章: Flink入门 Flink DataSet&DataSteam API Flink集群部署 Flink重启策略 Flink分布式缓存 Flink重启策略 Flink中的T ...
- Apache-Flink深度解析-TableAPI
您可能感兴趣的文章合集: Flink入门 Flink DataSet&DataSteam API Flink集群部署 Flink重启策略 Flink分布式缓存 Flink重启策略 Flink中 ...
- HBase与列存储
传统的行存储和(HBase)列存储的区别 1.为什么要按列存储 列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的 ...
随机推荐
- C++入门经典-例3.24-找图书的位置
1:运行代码: // 3.24.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...
- 笔记本电脑如何同时上内外网(通过usb外接网卡实现虚拟机连外网)
我们这里达成的方式不是内外网切换,而是真正意义上的同时上内网和外网 原理: 通过构建虚拟机,利用usb外接网卡(某宝某东都有售,价格在50大洋左右)使虚机连接外网,然后开启虚拟机的unity模式 准备 ...
- 在一般处理程序中使用session
public class Handler1 : IHttpHandler, IRequiresSessionState 需要继承 IRequiresSessionState接口,告诉程序要使用sess ...
- 认识一下java神器Btrace
转载: http://calvin1978.blogcn.com/articles/btrace1.html BTrace是神器,每一个需要每天解决线上问题,但完全不用BTrace的Java工程师,都 ...
- Molecular Dynamics
First]前处理 Second]运行MD Third]后处理 一.获得结构文件-来自实验数据或者某些化学软件工具 1]第一步: 获取并处理pdb文件 从Protein Data Bank下载小肽的p ...
- ListView 如何提高其效率?
① 复用 ConvertView② 自定义静态类 ViewHolder③ 使用分页加载 ④ 使用 WeakRefrence 引用 ImageView 对象 ViewHolder 为什么要声明为静态类? ...
- Zxing二维码的集成使用
在github网站搜索Zxing 详见:https://github.com/yipianfengye/android-zxingLibrary 在module的build.gradle中执行comp ...
- Java String.Format() 方法及参数说明
转自:https://blueram.iteye.com/blog/441683 JDK1.5中,String类新增了一个很有用的静态方法String.format():format(Locale l ...
- flutter 图片圆角
return Center( child: Container( padding: EdgeInsets.only(left: 10), width: 120, height: 80, child: ...
- Spring MVC三种返回方式
spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void. 下面一一进行说明: 1.ModelAndV ...