AutoMapper在ABP框架中的使用说明
為了說(shuō)明AutoMapper如何使用,我專門開設(shè)了一個(gè)專題來(lái)講,如果您還沒(méi)有查看該專題,請(qǐng)點(diǎn)擊這里。既然系統(tǒng)地學(xué)習(xí)了AutoMapper,那么接下來(lái)就是該用它實(shí)戰(zhàn)的時(shí)候了。今天,我們就來(lái)揭開AutoMapper如何在ABP框架中使用的面紗。
因?yàn)檫@里演示的是用ABP框架搭建的項(xiàng)目,本博客的講解的前提是假設(shè)你有了ABP基礎(chǔ),所以,如果您還不了解ABP框架,請(qǐng)查看我的ABP框架的系列博客,請(qǐng)點(diǎn)擊這里。
下面正式開始今天的講解。
首先,讓我們稍微回憶一下AutoMapper的知識(shí)點(diǎn)。
問(wèn):什么是AutoMapper?
答:AutoMapper翻譯過(guò)來(lái)就是“自動(dòng)映射工具”。它的作用就是將一個(gè)源類型映射成一個(gè)目標(biāo)類型,比如Person——>PersonDto,User——>UserDto。
問(wèn):什么情況下使用AutoMapper?
答:一般在項(xiàng)目的開發(fā)中,經(jīng)常需要將Entity實(shí)體映射成ModelDto或者ViewModel,這個(gè)時(shí)候,使用AutoMapper僅需要簡(jiǎn)單的配置,就可以實(shí)現(xiàn)這些需求,非常方便。
接下來(lái),講一下項(xiàng)目中的具體配置。
在我的ABP項(xiàng)目中,首先核心層有一個(gè)實(shí)體類TerminalDevices,類定義如下:
?View Code可以看到,僅一個(gè)實(shí)體類,就要將近300行的代碼,但是在服務(wù)層或者展現(xiàn)層使用的時(shí)候,有些屬性是不需要的,所以這時(shí)我們就要定義我們的Dto類了。
隨后,我在ABP項(xiàng)目中的服務(wù)層定義了一個(gè)對(duì)應(yīng)的TerminalDeviceDto類,定義如下:
?View Code當(dāng)然,這里的Dto類定義的屬性跟你的具體業(yè)務(wù)相關(guān),定義的屬性還可能更少。
上面講的是源類型和目標(biāo)類型的定義,下面開始講它們之間的映射配置。
首先,我在應(yīng)用服務(wù)層新建一個(gè)文件夾取名“AutoMapper”,里面放跟AutoMapper配置相關(guān)的東西。
如圖,新建一個(gè)類TerminalDeviceProfile(CityProfile類是我的另一個(gè)實(shí)體類對(duì)應(yīng)的AutoMapper配置文件),定義如下:
namespace Noah.ChargeStation.Application.AutoMapper {public class CityProfile:Profile{protected override void Configure(){Mapper.Initialize(cfg =>{cfg.CreateMap<Cities, CityDto>();});}} }如果您對(duì)這么配置不清楚原因,請(qǐng)查看我的AutoMapper系列教程,點(diǎn)擊查看。
再創(chuàng)建一個(gè)AutoMapperWebConfig靜態(tài)類,定義如下:
namespace Noah.ChargeStation.Application.AutoMapper {public static class AutoMapperWebConfig{public static void Configure(){Mapper.Initialize(cfg =>{cfg.AddProfile<CityProfile>();cfg.AddProfile<TerminalDeviceProfile>();});Mapper.AssertConfigurationIsValid();//驗(yàn)證所有的映射配置是否都正常 }} }接下來(lái),在應(yīng)用服務(wù)層的模塊類中調(diào)用該靜態(tài)類的靜態(tài)方法,加載所有的AutoMapper配置信息。
namespace Noah.ChargeStation.Application {[DependsOn(typeof(ChargeStationCoreModule), typeof(AbpAutoMapperModule))]public class ChargeStationApplicationModule : AbpModule{public override void Initialize(){IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());AutoMapperWebConfig.Configure();//一次性加載所有映射配置 }} }這里需要注意的是,AutoMapper的配置一般放在項(xiàng)目啟動(dòng)的時(shí)候進(jìn)行加載且只加載一次就夠了,而在ABP框架搭建的項(xiàng)目中,除了展現(xiàn)層(Web和WebAPI層),其他層都會(huì)有一個(gè)Module類(類名以Module結(jié)尾)。這些類都重寫了父類AbpModule的Initialize方法,旨在模塊初始化的時(shí)候調(diào)用,這樣,映射的配置也在模塊初始化的時(shí)候完成了。如果在一般的ASP.Net項(xiàng)目中,應(yīng)該在全局配置文件Global.asax中的Application_Start方法中調(diào)用AutoMapper的配置方法,其他項(xiàng)目類似。
以后,想要添加配置信息時(shí),只需要定義相應(yīng)的XXProfile類,然后在AutoMapperWebConfig類中添加配置文件類就可以了。
本文轉(zhuǎn)自tkbSimplest博客園博客,原文鏈接:http://www.cnblogs.com/farb/p/4973910.html,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的AutoMapper在ABP框架中的使用说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java爬虫搜索原理实现
- 下一篇: 安全狗护航金砖厦门会晤 圆满完成任务