AutoMapper使用筆記
AutoMapper是一個.NET的對象映射工具。
項目地址: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。
原文地址:http://www.cnblogs.com/dudu/archive/2011/12/16/2284828.html