Asp.Net Core 3.1 Api 集成Abp項目AutoMapper


Abp中分為自動屬性映射,和自定義映射

 

我們新建一個Core層作為實體層,項目也要安裝Abp Nuget Package

 

 

 

 TestCase作為表的實體

我們先做自定義映射demo,

 

 在Application層,新建一個創建TestCase的數據傳輸對象,用於創建實體時表單的傳入,這里不需要id所以不用繼承Entity

數據傳輸對象最好是需要就新建,不要相互之間繼承,雖然這樣可以減少代碼,但是后面維護會困難。我們創建有創建的dto,更新有更新的dto,返回的有TestCaseDto,他們之間互相獨立,不相互繼承

 

 創建一個返回數據的dto,一般展示層需要id,我們只要繼承Entity 就可以了。

 

 我們在dto文件夾中建一個TestCaseMapProfile類,它繼承AutoMapper的Profile,在構造方法中,創建dto 之間的映射。

 

 我們把之前的代碼修改一下,讓ITestCaseAppService繼承IApplicationService接口。讓TestCaseAppService繼承ApplicationService,ApplicationService提供了一個ObjectMapper對象,我們可以用ObjectMapper對象在實體和數據傳輸對象之間轉換。

 

 在Application 中我們添加對AbpAutoMapper項目的引用,代碼的作用是項目啟動會先加載Application中所有繼承Profile的類,用於做對象之間的自動映射。。

自動映射可以配置比較復雜的屬性,具體可以查看AutoMapper的用法

 

 

除了自動映射,還有另外一種用於簡單對象的屬性映射

 

AutoMap的雙向的,也就是TestCase 可以轉成TestCaseEditDto,TestCaseEditDto也可以轉成TestCase

 

 AutoMapTo 只能 從TestCaseEditDto 轉成TestCase

AutoMapFrom 只能 從TestCase 轉成 TestCaseEditDto

用於 更新實體的數據傳輸對象,我們只要使用AutoMapTo就可以了,因為我們要從Dto映射成實體

 

 

 這樣就可以實現映射。但是在實際的項目中,我們只需要更新我們的TestCaseEditDto中定義的屬性,原來的實體什么創建時間和創建人什么的都需要保留,

 

 

Abp 給我們提供了Map的另外一個重載方法,把原來舊實體需要保留的屬性可以保留下來,只更改表單中傳進來的屬性,也就是我們需要更改的屬性通過EditDto對外暴露

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM