天天看點

AutoMapper在ABP架構中的使用說明

下面正式開始今天的講解。

首先,讓我們稍微回憶一下AutoMapper的知識點。

問:什麼是AutoMapper?

答:AutoMapper翻譯過來就是“自動映射工具”。它的作用就是将一個源類型映射成一個目标類型,比如Person——>PersonDto,User——>UserDto。

問:什麼情況下使用AutoMapper?

答:一般在項目的開發中,經常需要将Entity實體映射成ModelDto或者ViewModel,這個時候,使用AutoMapper僅需要簡單的配置,就可以實作這些需求,非常友善。

接下來,講一下項目中的具體配置。

在我的ABP項目中,首先核心層有一個實體類TerminalDevices,類定義如下:

AutoMapper在ABP架構中的使用說明

 View Code

可以看到,僅一個實體類,就要将近300行的代碼,但是在服務層或者展現層使用的時候,有些屬性是不需要的,是以這時我們就要定義我們的Dto類了。

随後,我在ABP項目中的服務層定義了一個對應的TerminalDeviceDto類,定義如下:

AutoMapper在ABP架構中的使用說明

當然,這裡的Dto類定義的屬性跟你的具體業務相關,定義的屬性還可能更少。

上面講的是源類型和目标類型的定義,下面開始講它們之間的映射配置。

首先,我在應用服務層建立一個檔案夾取名“AutoMapper”,裡面放跟AutoMapper配置相關的東西。

AutoMapper在ABP架構中的使用說明

如圖,建立一個類TerminalDeviceProfile(CityProfile類是我的另一個實體類對應的AutoMapper配置檔案),定義如下:

AutoMapper在ABP架構中的使用說明
AutoMapper在ABP架構中的使用說明

再建立一個AutoMapperWebConfig靜态類,定義如下:

AutoMapper在ABP架構中的使用說明
AutoMapper在ABP架構中的使用說明

接下來,在應用服務層的子產品類中調用該靜态類的靜态方法,加載所有的AutoMapper配置資訊。

AutoMapper在ABP架構中的使用說明
AutoMapper在ABP架構中的使用說明

這裡需要注意的是,AutoMapper的配置一般放在項目啟動的時候進行加載且隻加載一次就夠了,而在ABP架構搭建的項目中,除了展現層(Web和WebAPI層),其他層都會有一個Module類(類名以Module結尾)。這些類都重寫了父類AbpModule的Initialize方法,旨在子產品初始化的時候調用,這樣,映射的配置也在子產品初始化的時候完成了。如果在一般的ASP.Net項目中,應該在全局配置檔案Global.asax中的Application_Start方法中調用AutoMapper的配置方法,其他項目類似。

以後,想要添加配置資訊時,隻需要定義相應的XXProfile類,然後在AutoMapperWebConfig類中添加配置檔案類就可以了。

本文轉自tkbSimplest部落格園部落格,原文連結:http://www.cnblogs.com/farb/p/4973910.html,如需轉載請自行聯系原作者

繼續閱讀