AutoMapper使用笔记
2016-02-16 15:51
435 查看
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。
相关文章推荐
- unity3d 打包apk
- Android xml中为文字添加阴影(shadow方法)
- Android手机调整/data分区和/sdcard分区
- No Spring WebApplicationInitializer types detected on classpath
- android 控件滑动
- Android Volley框架的使用(3)
- Android 沉浸式状态栏
- Unity 使用LineRenderer 画箭头
- iOS与JS交互
- iOS 【对iOS中控制器view的理解 以及 view仍在但不显示数据的原因探索】
- Android设置壁纸
- Android IPC进程通信——Messager方式
- iOS开发——关于开发者账号引发的血案
- Android Handler 机制
- Unity Shader 学习笔记(十四)使用屏幕特效实现亮度饱和度和对比度
- Android获得全局进程信息以及进程使用的内存情况
- Android中最常使用的Context上下文相关总结
- Android应用内多进程的使用及注意事项
- 支付宝支付iOS
- Android 通过Service单独进程模仿离线推送 Server Push