AutoMapper使用笔记
2015-05-29 15:15
387 查看
AutoMapper是一个.NET的对象映射工具。
项目地址:https://github.com/AutoMapper/AutoMapper。
帮助文档:https://github.com/AutoMapper/AutoMapper/wiki
主要用途
领域对象与DTO之间的转换、数据库查询结果映射至实体对象。
使用笔记
场景1:源类型BlogEntry,目标类型BlogPostDto,指定属性进行映射(BlogEntry.ID对应于BlogPostDto.PostId)。
代码:
场景2:IDataReader映射至实体类
代码:
场景3:列表类型之间的映射,比如:源类型List<BlogSite>,目标类型List<BlogSiteDto>
代码如下:
注:必须要先通过CreateMap建立BlogSite与BlogSiteDto的映射关系。
场景4:在映射时为目标实例的属性指定值
代码如下:
注:BlogSiteDto是BlogPostDto的一个属性。
补充:
AutoMapper的配置(比如AutoMapper.Mapper.CreateMap<BlogSite, BlogSiteDto>();)建议放在程序启动时,比如Global.asax的Application_Start, BootStrapper。
项目地址:https://github.com/AutoMapper/AutoMapper。
帮助文档:https://github.com/AutoMapper/AutoMapper/wiki
主要用途
领域对象与DTO之间的转换、数据库查询结果映射至实体对象。
使用笔记
场景1:源类型BlogEntry,目标类型BlogPostDto,指定属性进行映射(BlogEntry.ID对应于BlogPostDto.PostId)。
代码:
AutoMapper.Mapper.CreateMap<BlogEntry, BlogPostDto>() .ForMember(dto => dto.PostId, opt => opt.MapFrom(entity => entity.ID));
场景2:IDataReader映射至实体类
代码:
using (IDataReader reader = _db.ExecuteReader(command)) { if (reader.Read()) { return AutoMapper.Mapper.DynamicMap<BlogConfig>(reader); } }
场景3:列表类型之间的映射,比如:源类型List<BlogSite>,目标类型List<BlogSiteDto>
代码如下:
AutoMapper.Mapper.CreateMap<BlogSite, BlogSiteDto>(); var blogSiteDto = AutoMapper.Mapper.Map<List<BlogSite>, List<BlogSiteDto>>(blogSite);
注:必须要先通过CreateMap建立BlogSite与BlogSiteDto的映射关系。
场景4:在映射时为目标实例的属性指定值
代码如下:
var blogSiteDto = new BlogSiteDto(); AutoMapper.Mapper.CreateMap<BlogEntry, BlogPostDto>() .ForMember(dto => dto.BlogSiteDto, opt => opt.UseValue(blogSiteDto));
注:BlogSiteDto是BlogPostDto的一个属性。
补充:
AutoMapper的配置(比如AutoMapper.Mapper.CreateMap<BlogSite, BlogSiteDto>();)建议放在程序启动时,比如Global.asax的Application_Start, BootStrapper。
相关文章推荐
- Android jni库加载错误:java.lang.UnsatisfiedLinkError
- 一、Unity3D 5.0.1-示例项目“汽车游戏”的展示及开发准备
- android访问NFC的SE
- Android Scroller、VelocityTracker
- 三步教你iOS导入.ttf字体文件
- Android动态加载包含so文件的jar的自定义view控件
- Unity5第二次作业物体绕10个点的bezier曲线
- ios GCD
- Unity5中游戏角色(Object)平滑旋转
- Android JNI开发生成.h头文件问题(转)
- android开发常用方法
- Unity5 3D物体做beizer曲线
- 备份服务器数据(IIS配置备份还原、任务计划、服务列表和APP)
- Unity5模拟小球碰撞以及阻力现象
- Unity5_仿愤怒的小鸟游戏
- Unity5箱子中中物体碰撞效果
- Android Studio Gradle基础
- dialog的弹出动画(最关键的是坐标系)
- IOS 开发学习29 Socket框架 AsynSocket的使用
- 修改Android手机的“虚拟机堆大小”和android:largeHeap来防止APP内存溢出问题