日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

AutoMapper在ABP框架中的使用说明

發(fā)布時(shí)間:2023/12/20 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AutoMapper在ABP框架中的使用说明 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為了說(shuō)明AutoMapper如何使用,我專(zhuān)門(mén)開(kāi)設(shè)了一個(gè)專(zhuān)題來(lái)講,如果您還沒(méi)有查看該專(zhuān)題,請(qǐng)點(diǎn)擊這里。既然系統(tǒng)地學(xué)習(xí)了AutoMapper,那么接下來(lái)就是該用它實(shí)戰(zhàn)的時(shí)候了。今天,我們就來(lái)揭開(kāi)AutoMapper如何在ABP框架中使用的面紗。

因?yàn)檫@里演示的是用ABP框架搭建的項(xiàng)目,本博客的講解的前提是假設(shè)你有了ABP基礎(chǔ),所以,如果您還不了解ABP框架,請(qǐng)查看我的ABP框架的系列博客,請(qǐng)點(diǎn)擊這里

下面正式開(kāi)始今天的講解。

首先,讓我們稍微回憶一下AutoMapper的知識(shí)點(diǎn)。

問(wèn):什么是AutoMapper?

答:AutoMapper翻譯過(guò)來(lái)就是“自動(dòng)映射工具”。它的作用就是將一個(gè)源類(lèi)型映射成一個(gè)目標(biāo)類(lèi)型,比如Person——>PersonDto,User——>UserDto。

問(wèn):什么情況下使用AutoMapper?

答:一般在項(xiàng)目的開(kāi)發(fā)中,經(jīng)常需要將Entity實(shí)體映射成ModelDto或者ViewModel,這個(gè)時(shí)候,使用AutoMapper僅需要簡(jiǎn)單的配置,就可以實(shí)現(xiàn)這些需求,非常方便。

接下來(lái),講一下項(xiàng)目中的具體配置。

在我的ABP項(xiàng)目中,首先核心層有一個(gè)實(shí)體類(lèi)TerminalDevices,類(lèi)定義如下:

?View Code

可以看到,僅一個(gè)實(shí)體類(lèi),就要將近300行的代碼,但是在服務(wù)層或者展現(xiàn)層使用的時(shí)候,有些屬性是不需要的,所以這時(shí)我們就要定義我們的Dto類(lèi)了。

隨后,我在ABP項(xiàng)目中的服務(wù)層定義了一個(gè)對(duì)應(yīng)的TerminalDeviceDto類(lèi),定義如下:

?View Code

當(dāng)然,這里的Dto類(lèi)定義的屬性跟你的具體業(yè)務(wù)相關(guān),定義的屬性還可能更少。

上面講的是源類(lèi)型和目標(biāo)類(lèi)型的定義,下面開(kāi)始講它們之間的映射配置。

首先,我在應(yīng)用服務(wù)層新建一個(gè)文件夾取名“AutoMapper”,里面放跟AutoMapper配置相關(guān)的東西。

如圖,新建一個(gè)類(lèi)TerminalDeviceProfile(CityProfile類(lèi)是我的另一個(gè)實(shí)體類(lèi)對(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)類(lè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ù)層的模塊類(lèi)中調(diào)用該靜態(tài)類(lè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類(lèi)(類(lèi)名以Module結(jié)尾)。這些類(lèi)都重寫(xiě)了父類(lèi)AbpModule的Initialize方法,旨在模塊初始化的時(shí)候調(diào)用,這樣,映射的配置也在模塊初始化的時(shí)候完成了。如果在一般的ASP.Net項(xiàng)目中,應(yīng)該在全局配置文件Global.asax中的Application_Start方法中調(diào)用AutoMapper的配置方法,其他項(xiàng)目類(lèi)似。

以后,想要添加配置信息時(shí),只需要定義相應(yīng)的XXProfile類(lèi),然后在AutoMapperWebConfig類(lèi)中添加配置文件類(lèi)就可以了。




本文轉(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。