asp.net core 3.1.x 中使用AutoMapper
AutoMapper作用
- AutoMapper的作用是把一個物件轉化為另一個物件,避免每次都去轉化;
- 使用DTO實現表現層與領域Model的解耦,用AutoMapper來實現DTO與領域Model的相互轉換;
基於訪問性的控制或從模型本身上考慮。對外開放的原則是,儘量降低系統耦合度,否則內部一旦變更外部所有的介面都要跟隨發生變更;另外,系統內部的一些資料或方法並不希望外部能看到或呼叫。類似的考慮很多,只是舉個例子。系統設計的原則是高內聚低耦合,儘量依賴抽象而不依賴於具體。這裡感覺automapper就是使資料庫實體對一個外部呼叫實體的轉換更簡便(不用一個屬性一個屬性的賦值)。
AutoMapper uses a fluent configuration API to define an object-object mapping strategy.
AutoMapper uses a convention-based matching algorithm to match up source to destination values.
AutoMapper is geared towards model projection scenarios to flatten complex object models to DTOs and other simple objects, whose design is better suited for serialization, communication, messaging, or simply an anti-corruption layer between the domain and application layer.
AutoMapper supports the following platforms:
.NET 4.6.1+
.NET Standard 2.0+
官網:http://automapper.org/
文件:https://automapper.readthedocs.io/en/latest/index.html
GitHub:https://github.com/AutoMapper/AutoMapper/blob/master/docs/index.rst
什麼是DTO?
DTO(Data Transfer Object)就是資料傳輸物件(貧血模型),說白了就是一個物件,只不過裡邊全是資料而已。
為什麼要用DTO?
- DTO更注重資料,對領域物件進行合理封裝,從而不會將領域物件的行為過分暴露給表現層;
- DTO是面向UI的需求而設計的,而領域模型是面向業務而設計的。因此DTO更適合於和表現層的互動,通過DTO我們實現了表現層與領域Model之間的解耦,因此改動領域Model不會影響UI層;
- DTO說白了就是資料而已,不包含任何的業務邏輯,屬於瘦身型(也稱貧血型)的物件,使用時可以根據不同的UI需求進行靈活的運用;
應用場景
- 對外服務介面資料模型;
- UI層檢視模型;
- 使用者的輸入輸出引數化模型;
如何在asp.net core 3.1.x 中應用AutoMapper實現模型轉化對映?
- Microsoft Visual Studio Enterprise 2019 版本 16.6.4;
- .net core 3.1.7;
- Nuget包:AutoMapper.Extensions.Microsoft.DependencyInjection -Version 8.0.1;
1. 新建專案【UseAutoMapperDemo】如下所示:
2.使用Nuget在專案中安裝依賴包;
Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection -Version 8.0.1
對建立的專案改造一下,新建資料夾【Model】分別新增兩個模型類【PersonA 和 PersonB】方便後面的演示使用;
2. 建立AutoMapper對映規則:在資料夾【Model】中新建類【AutoMapperProfile】配置模型的對映規則;
3. 在Startup的ConfigureServices中新增AutoMapper:
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
#region 新增AutoMapper
services.AddAutoMapper(typeof(AutoMapperProfile));
#endregion
}
//注意:引入對應的名稱空間;
using AutoMapper;
using UseAutoMapperDemo.Model;
4. 在Controller建構函式中注入你的IMapper:
#region 註冊IMapper
private readonly IMapper mapper;
public ValuesController(IMapper mapper)
{
this.mapper = mapper;
}
#endregion
5. 使用 AutoMapper 實現物件轉化;
//單物件轉化
var personB = mapper.Map<PersonB>(personA);
//List集合物件轉化
var personBs = mapper.Map<List<PersonB>>(personAs);
以上內容就是AutoMapper在asp.net core 3.1.x的api專案中的基本使用,更多使用請檢視官網;
demo專案下載:UseAutoMapperDemo.zip
相關文章
- 在ASP.NET Core MVC 2.2 中使用AutoMapperASP.NETMVCAPP
- ASP.NET Core 中的物件對映之 AutoMapperASP.NET物件APP
- .net Core 使用AutoMapperAPP
- .NET Core 中AutoMapper的配置及使用APP
- .net core中使用AutomapperAPP
- 在 ASP.NET Core 專案中使用 AutoMapper 進行實體對映ASP.NETAPP
- .Net core 中 AutoMapper的應用APP
- .Net Core中更高階的AutoMapper示例APP
- .net core3.1 AutoMapperAPP
- ASP.NET Core ----ASP.NET Core中使用Code FirstASP.NET
- .NET CORE 中使用AutoMapper進行物件對映APP物件
- .NET Core Dto對映(AutoMapper)APP
- .Net Core AutoMapper自定義擴充套件方法的使用APP套件
- jwt-在asp.net core中的使用jwtJWTASP.NET
- 《Asp.Net Core3 + Vue3入坑教程》 - 3.AutoMapper & Restful API & DIASP.NETVueAPPRESTAPI
- 在ASP.NET Core中用HttpClient(六)——ASP.NET Core中使用HttpClientFactoryASP.NETHTTPclient
- ASP.NET Core 中使用TypeScriptASP.NETTypeScript
- ASP.Net Core5.0 EF Core使用記錄ASP.NET
- 【asp.net core 系列】14 .net core 中的IOCASP.NET
- 在ASP.NET Core中使用ViewComponentASP.NETView
- ASP.NET Core使用EF Core操作MySql資料庫ASP.NETMySql資料庫
- 在 ASP.NET Core 中禁用HTTPSASP.NETHTTP
- 聊聊ASP.NET Core中的配置ASP.NET
- ASP.NET Core 中的快取ASP.NET快取
- 淺談ASP.NET Core中IOC與DI的理解和使用ASP.NET
- .net framework autoMapper使用FrameworkAPP
- ASP.NET Core Web API中使用SwaggerASP.NETWebAPISwagger
- ASP.NET Core初步使用Quartz.NETASP.NETquartz
- 如何在 ASP.Net Core 中使用 SerilogASP.NET
- 如何在 ASP.Net Core 中使用 LamarASP.NET
- 如何在ASP.NET Core 中使用IHttpClientFactoryASP.NETHTTPclient
- ASP.NET Core 學習筆記 第四篇 ASP.NET Core 中的配置ASP.NET筆記
- (精華)2020年7月3日 ASP.NET Core AutoMapper實現類的相互對映(工具版)ASP.NETAPP
- ASP.NET 6.0 Core 遷移 ASP.NET Core 7.0ASP.NET
- ASP.NET Core 中的依賴注入ASP.NET依賴注入
- ASP.NET Core 中的管道機制ASP.NET
- ASP.NET Core 入門教程 2、使用ASP.NET Core MVC框架構建Web應用ASP.NETMVC框架架構Web
- ASP.NET Core 學習筆記 第五篇 ASP.NET Core 中的選項ASP.NET筆記